/*
 * Copyright Codeplay Software Ltd.
 *
 * Licensed under the Apache License, Version 2.0 (the "License");
 * you may not use these files except in compliance with the License.
 * You may obtain a copy of the License at
 *
 *     http://www.apache.org/licenses/LICENSE-2.0
 *
 * Unless required by applicable law or agreed to in writing, software
 * distributed under the License is distributed on an "AS IS" BASIS,
 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
 * See the License for the specific language governing permissions and
 * limitations under the License.
 */

// DO NOT MODIFY BY HAND
// This file was automatically generated by generate_depthwise_conv2d_tests.py.
// Results calculated using Tensorflow v1.12.0.

#include <gtest/gtest.h>

#include "sycldnn/padding_mode.h"

#include "test/types/cartesian_product.h"
#include "test/types/kernel_data_types.h"
#include "test/types/test_backend_types.h"
#include "test/types/to_gtest_types.h"

#include "test/depthwise_conv2d/window_stride_fixture.h"

#include <array>
#include <vector>

using DataTypeList = sycldnn::types::KernelDataTypes;
using Backends = sycldnn::types::DefaultBackendTypes;

using SNNTypePairs =
    sycldnn::types::CartesianProduct<DataTypeList, Backends>::type;
using GTestTypePairs = sycldnn::types::ToGTestTypes<SNNTypePairs>::type;

template <typename Pair>
using InputBackpropWindow3Stride2 =
    sycldnn::depthwise_conv2d::WindowStrideTest<Pair, 3, 2>;
TYPED_TEST_SUITE(InputBackpropWindow3Stride2, GTestTypePairs);
TYPED_TEST(InputBackpropWindow3Stride2, SAME1x5x5x1x1) {
  using DataType = typename TestFixture::DataType;
  const std::vector<DataType> exp_out = {
      5.,  14., 10., 24.,  15., 16.,  40., 26., 60., 36., 20., 44., 25.,
      54., 30., 46., 100., 56., 120., 66., 35., 74., 40., 84., 45.};
  const std::array<int, 4> in_shape = {{1, 5, 5, 1}};
  const int multiplier = 1;
  const auto padding = sycldnn::PaddingMode::SAME;
  const DataType max_input_val = 2048.0;
  this->run_input_backprop_test(exp_out, in_shape, multiplier, padding,
                                max_input_val);
}
TYPED_TEST(InputBackpropWindow3Stride2, VALID1x5x5x1x1) {
  using DataType = typename TestFixture::DataType;
  const std::vector<DataType> exp_out = {
      1.,  2.,  5.,  4.,  6.,  4.,  5.,  14., 10., 12., 10., 14., 36.,
      24., 30., 12., 15., 34., 20., 24., 21., 24., 55., 32., 36.};
  const std::array<int, 4> in_shape = {{1, 5, 5, 1}};
  const int multiplier = 1;
  const auto padding = sycldnn::PaddingMode::VALID;
  const DataType max_input_val = 2048.0;
  this->run_input_backprop_test(exp_out, in_shape, multiplier, padding,
                                max_input_val);
}
TYPED_TEST(InputBackpropWindow3Stride2, SAME1x5x5x1x2) {
  using DataType = typename TestFixture::DataType;
  const std::vector<DataType> exp_out = {
      29.,  88.,  67.,  164., 105., 100., 260., 176., 412.,
      252., 143., 316., 181., 392., 219., 328., 716., 404.,
      868., 480., 257., 544., 295., 620., 333.};
  const std::array<int, 4> in_shape = {{1, 5, 5, 1}};
  const int multiplier = 2;
  const auto padding = sycldnn::PaddingMode::SAME;
  const DataType max_input_val = 2048.0;
  this->run_input_backprop_test(exp_out, in_shape, multiplier, padding,
                                max_input_val);
}
TYPED_TEST(InputBackpropWindow3Stride2, VALID1x5x5x1x2) {
  using DataType = typename TestFixture::DataType;
  const std::vector<DataType> exp_out = {
      5.,   11.,  28.,  25.,  39.,  23.,  29., 88.,  67.,
      81.,  58.,  86.,  232., 162., 206., 83., 105., 240.,
      143., 173., 149., 171., 396., 233., 263.};
  const std::array<int, 4> in_shape = {{1, 5, 5, 1}};
  const int multiplier = 2;
  const auto padding = sycldnn::PaddingMode::VALID;
  const DataType max_input_val = 2048.0;
  this->run_input_backprop_test(exp_out, in_shape, multiplier, padding,
                                max_input_val);
}
TYPED_TEST(InputBackpropWindow3Stride2, SAME1x5x5x1x4) {
  using DataType = typename TestFixture::DataType;
  const std::vector<DataType> exp_out = {
      190.,  612.,  486.,  1204., 782.,  692.,  1848., 1284., 3032.,
      1876., 1078., 2388., 1374., 2980., 1670., 2468., 5400., 3060.,
      6584., 3652., 1966., 4164., 2262., 4756., 2558.};
  const std::array<int, 4> in_shape = {{1, 5, 5, 1}};
  const int multiplier = 4;
  const auto padding = sycldnn::PaddingMode::SAME;
  const DataType max_input_val = 2048.0;
  this->run_input_backprop_test(exp_out, in_shape, multiplier, padding,
                                max_input_val);
}
TYPED_TEST(InputBackpropWindow3Stride2, VALID1x5x5x1x4) {
  using DataType = typename TestFixture::DataType;
  const std::vector<DataType> exp_out = {
      30.,   70.,   180.,  174.,  278.,  150.,  190., 612., 486.,
      590.,  380.,  588.,  1640., 1180., 1516., 614., 782., 1796.,
      1078., 1310., 1118., 1286., 2996., 1774., 2006.};
  const std::array<int, 4> in_shape = {{1, 5, 5, 1}};
  const int multiplier = 4;
  const auto padding = sycldnn::PaddingMode::VALID;
  const DataType max_input_val = 2048.0;
  this->run_input_backprop_test(exp_out, in_shape, multiplier, padding,
                                max_input_val);
}
TYPED_TEST(InputBackpropWindow3Stride2, SAME1x5x5x2x1) {
  using DataType = typename TestFixture::DataType;
  const std::vector<DataType> exp_out = {
      9.,   20.,  32.,  56.,  27.,  40.,  68.,  96.,  45.,  60.,
      36.,  64.,  100., 160., 72.,  104., 172., 240., 108., 144.,
      63.,  80.,  140., 176., 81.,  100., 176., 216., 99.,  120.,
      144., 184., 316., 400., 180., 224., 388., 480., 216., 264.,
      117., 140., 248., 296., 135., 160., 284., 336., 153., 180.};
  const std::array<int, 4> in_shape = {{1, 5, 5, 2}};
  const int multiplier = 1;
  const auto padding = sycldnn::PaddingMode::SAME;
  const DataType max_input_val = 2048.0;
  this->run_input_backprop_test(exp_out, in_shape, multiplier, padding,
                                max_input_val);
}
TYPED_TEST(InputBackpropWindow3Stride2, VALID1x5x5x2x1) {
  using DataType = typename TestFixture::DataType;
  const std::vector<DataType> exp_out = {
      1.,  4.,  3.,  8.,   8.,  20.,  9.,   16.,  15.,  24.,  7.,  16., 9.,
      20., 32., 56., 27.,  40., 33.,  48.,  18.,  40.,  30.,  56., 88., 144.,
      66., 96., 86., 120., 35., 48.,  45.,  60.,  104., 136., 63., 80., 77.,
      96., 65., 84., 75.,  96., 176., 220., 105., 128., 119., 144.};
  const std::array<int, 4> in_shape = {{1, 5, 5, 2}};
  const int multiplier = 1;
  const auto padding = sycldnn::PaddingMode::VALID;
  const DataType max_input_val = 2048.0;
  this->run_input_backprop_test(exp_out, in_shape, multiplier, padding,
                                max_input_val);
}
TYPED_TEST(InputBackpropWindow3Stride2, SAME1x5x5x2x2) {
  using DataType = typename TestFixture::DataType;
  const std::vector<DataType> exp_out = {
      53.,   137.,  214.,  398.,  193.,  293.,  494.,  710.,  333.,  449.,
      238.,  454.,  692.,  1156., 518.,  766.,  1252., 1780., 798.,  1078.,
      473.,  605.,  1054., 1334., 613.,  761.,  1334., 1646., 753.,  917.,
      1078., 1390., 2372., 3028., 1358., 1702., 2932., 3652., 1638., 2014.,
      893.,  1073., 1894., 2270., 1033., 1229., 2174., 2582., 1173., 1385.};
  const std::array<int, 4> in_shape = {{1, 5, 5, 2}};
  const int multiplier = 2;
  const auto padding = sycldnn::PaddingMode::SAME;
  const DataType max_input_val = 2048.0;
  this->run_input_backprop_test(exp_out, in_shape, multiplier, padding,
                                max_input_val);
}
TYPED_TEST(InputBackpropWindow3Stride2, VALID1x5x5x2x2) {
  using DataType = typename TestFixture::DataType;
  const std::vector<DataType> exp_out = {
      5.,   25.,  17.,  53.,  46.,   134.,  61.,  113., 105., 173.,
      41.,  109., 53.,  137., 214.,  398.,  193., 293., 237., 353.,
      106., 274., 194., 394., 604.,  1036., 474., 706., 626., 890.,
      257., 357., 333., 449., 774.,  1022., 473., 605., 581., 729.,
      485., 633., 561., 725., 1326., 1670., 797., 977., 905., 1101.};
  const std::array<int, 4> in_shape = {{1, 5, 5, 2}};
  const int multiplier = 2;
  const auto padding = sycldnn::PaddingMode::VALID;
  const DataType max_input_val = 2048.0;
  this->run_input_backprop_test(exp_out, in_shape, multiplier, padding,
                                max_input_val);
}
TYPED_TEST(InputBackpropWindow3Stride2, SAME1x5x5x2x4) {
  using DataType = typename TestFixture::DataType;
  const std::vector<DataType> exp_out = {
      350.,   1006.,  1548.,  2988.,  1454.,  2238.,  3756.,  5452.,  2558.,
      3470.,  1708.,  3404.,  5112.,  8760.,  3916.,  5868.,  9528.,  13688.,
      6124.,  8332.,  3662.,  4702.,  8172.,  10380., 4766.,  5934.,  10380.,
      12844., 5870.,  7166.,  8332.,  10796., 18360., 23544., 10540., 13260.,
      22776., 28472., 12748., 15724., 6974.,  8398.,  14796., 17772., 8078.,
      9630.,  17004., 20236., 9182.,  10862.};
  const std::array<int, 4> in_shape = {{1, 5, 5, 2}};
  const int multiplier = 4;
  const auto padding = sycldnn::PaddingMode::SAME;
  const DataType max_input_val = 2048.0;
  this->run_input_backprop_test(exp_out, in_shape, multiplier, padding,
                                max_input_val);
}
TYPED_TEST(InputBackpropWindow3Stride2, VALID1x5x5x2x4) {
  using DataType = typename TestFixture::DataType;
  const std::vector<DataType> exp_out = {
      30.,   174.,  110.,  382.,  300.,   972.,   446.,  846.,  782.,  1310.,
      270.,  798.,  350.,  1006., 1548.,  2988.,  1454., 2238., 1790., 2702.,
      700.,  2012., 1372., 2940., 4440.,  7832.,  3580., 5404., 4764., 6844.,
      1966., 2750., 2558., 3470., 5964.,  7916.,  3662., 4702., 4510., 5678.,
      3742., 4910., 4334., 5630., 10284., 13004., 6206., 7630., 7054., 8606.};
  const std::array<int, 4> in_shape = {{1, 5, 5, 2}};
  const int multiplier = 4;
  const auto padding = sycldnn::PaddingMode::VALID;
  const DataType max_input_val = 2048.0;
  this->run_input_backprop_test(exp_out, in_shape, multiplier, padding,
                                max_input_val);
}
TYPED_TEST(InputBackpropWindow3Stride2, SAME1x5x5x4x1) {
  using DataType = typename TestFixture::DataType;
  const std::vector<DataType> exp_out = {
      17.,  36.,  57.,   80.,   86.,   128.,  174.,  224.,  85.,  108.,
      133., 160., 222.,  272.,  326.,  384.,  153.,  180.,  209., 240.,
      94.,  144., 198.,  256.,  292.,  400.,  516.,  640.,  230., 288.,
      350., 416., 564.,  688.,  820.,  960.,  366.,  432.,  502., 576.,
      221., 252., 285.,  320.,  494.,  560.,  630.,  704.,  289., 324.,
      361., 400., 630.,  704.,  782.,  864.,  357.,  396.,  437., 480.,
      502., 576., 654.,  736.,  1108., 1264., 1428., 1600., 638., 720.,
      806., 896., 1380., 1552., 1732., 1920., 774.,  864.,  958., 1056.,
      425., 468., 513.,  560.,  902.,  992.,  1086., 1184., 493., 540.,
      589., 640., 1038., 1136., 1238., 1344., 561.,  612.,  665., 720.};
  const std::array<int, 4> in_shape = {{1, 5, 5, 4}};
  const int multiplier = 1;
  const auto padding = sycldnn::PaddingMode::SAME;
  const DataType max_input_val = 2048.0;
  this->run_input_backprop_test(exp_out, in_shape, multiplier, padding,
                                max_input_val);
}
TYPED_TEST(InputBackpropWindow3Stride2, VALID1x5x5x4x1) {
  using DataType = typename TestFixture::DataType;
  const std::vector<DataType> exp_out = {
      1.,   4.,   9.,   16.,  5.,   12.,  21.,  32.,  14.,  32.,  54.,  80.,
      25.,  36.,  49.,  64.,  45.,  60.,  77.,  96.,  13.,  28.,  45.,  64.,
      17.,  36.,  57.,  80.,  86.,  128., 174., 224., 85.,  108., 133., 160.,
      105., 132., 161., 192., 34.,  72.,  114., 160., 74.,  120., 170., 224.,
      252., 352., 460., 576., 210., 264., 322., 384., 282., 344., 410., 480.,
      117., 140., 165., 192., 153., 180., 209., 240., 358., 416., 478., 544.,
      221., 252., 285., 320., 273., 308., 345., 384., 225., 260., 297., 336.,
      261., 300., 341., 384., 622., 704., 790., 880., 377., 420., 465., 512.,
      429., 476., 525., 576.};
  const std::array<int, 4> in_shape = {{1, 5, 5, 4}};
  const int multiplier = 1;
  const auto padding = sycldnn::PaddingMode::VALID;
  const DataType max_input_val = 2048.0;
  this->run_input_backprop_test(exp_out, in_shape, multiplier, padding,
                                max_input_val);
}
TYPED_TEST(InputBackpropWindow3Stride2, SAME1x5x5x4x2) {
  using DataType = typename TestFixture::DataType;
  const std::vector<DataType> exp_out = {
      101.,   249.,   413.,   593.,   610.,   938.,   1298., 1690., 637.,
      817.,   1013.,  1225.,  1682.,  2074.,  2498.,  2954., 1173., 1385.,
      1613.,  1857.,  658.,   1050.,  1474.,  1930.,  2132., 2980., 3892.,
      4868.,  1730.,  2186.,  2674.,  3194.,  4276.,  5252., 6292., 7396.,
      2802.,  3322.,  3874.,  4458.,  1709.,  1953.,  2213., 2489., 3826.,
      4346.,  4898.,  5482.,  2245.,  2521.,  2813.,  3121., 4898., 5482.,
      6098.,  6746.,  2781.,  3089.,  3413.,  3753.,  3874., 4458., 5074.,
      5722.,  8564.,  9796.,  11092., 12452., 4946.,  5594., 6274., 6986.,
      10708., 12068., 13492., 14980., 6018.,  6730.,  7474., 8250., 3317.,
      3657.,  4013.,  4385.,  7042.,  7754.,  8498.,  9274., 3853., 4225.,
      4613.,  5017.,  8114.,  8890.,  9698.,  10538., 4389., 4793., 5213.,
      5649.};
  const std::array<int, 4> in_shape = {{1, 5, 5, 4}};
  const int multiplier = 2;
  const auto padding = sycldnn::PaddingMode::SAME;
  const DataType max_input_val = 2048.0;
  this->run_input_backprop_test(exp_out, in_shape, multiplier, padding,
                                max_input_val);
}
TYPED_TEST(InputBackpropWindow3Stride2, VALID1x5x5x4x2) {
  using DataType = typename TestFixture::DataType;
  const std::vector<DataType> exp_out = {
      5.,    25.,   61.,   113.,  29.,   81.,   149.,  233.,  82.,   218.,
      386.,  586.,  181.,  265.,  365.,  481.,  333.,  449.,  581.,  729.,
      77.,   193.,  325.,  473.,  101.,  249.,  413.,  593.,  610.,  938.,
      1298., 1690., 637.,  817.,  1013., 1225., 789.,  1001., 1229., 1473.,
      202.,  498.,  826.,  1186., 506.,  866.,  1258., 1682., 1828., 2612.,
      3460., 4372., 1578., 2002., 2458., 2946., 2138., 2626., 3146., 3698.,
      893.,  1073., 1269., 1481., 1173., 1385., 1613., 1857., 2754., 3210.,
      3698., 4218., 1709., 1953., 2213., 2489., 2117., 2393., 2685., 2993.,
      1733., 2009., 2301., 2609., 2013., 2321., 2645., 2985., 4818., 5466.,
      6146., 6858., 2933., 3273., 3629., 4001., 3341., 3713., 4101., 4505.};
  const std::array<int, 4> in_shape = {{1, 5, 5, 4}};
  const int multiplier = 2;
  const auto padding = sycldnn::PaddingMode::VALID;
  const DataType max_input_val = 2048.0;
  this->run_input_backprop_test(exp_out, in_shape, multiplier, padding,
                                max_input_val);
}
TYPED_TEST(InputBackpropWindow3Stride2, SAME1x5x5x4x4) {
  using DataType = typename TestFixture::DataType;
  const std::vector<DataType> exp_out = {
      670.,   1838.,  3134.,   4558.,   4572.,  7164.,  10012., 13116., 4926.,
      6350.,  7902.,  9582.,   13084.,  16188., 19548., 23164., 9182.,  10862.,
      12670., 14606., 4892.,   7996.,   11356., 14972., 16248., 22968., 30200.,
      37944., 13404., 17020.,  20892.,  25020., 33272., 41016., 49272., 58040.,
      21916., 26044., 30428.,  35068.,  13438., 15374., 17438., 19630., 30108.,
      34236., 38620., 43260.,  17694.,  19886., 22206., 24654., 38620., 43260.,
      48156., 53308., 21950.,  24398.,  26974., 29678., 30428., 35068., 39964.,
      45116., 67320., 77112.,  87416.,  98232., 38940., 44092., 49500., 55164.,
      84344., 95160., 106488., 118328., 47452., 53116., 59036., 65212., 26206.,
      28910., 31742., 34702.,  55644.,  61308., 67228., 73404., 30462., 33422.,
      36510., 39726., 64156.,  70332.,  76764., 83452., 34718., 37934., 41278.,
      44750.};
  const std::array<int, 4> in_shape = {{1, 5, 5, 4}};
  const int multiplier = 4;
  const auto padding = sycldnn::PaddingMode::SAME;
  const DataType max_input_val = 2048.0;
  this->run_input_backprop_test(exp_out, in_shape, multiplier, padding,
                                max_input_val);
}
TYPED_TEST(InputBackpropWindow3Stride2, VALID1x5x5x4x4) {
  using DataType = typename TestFixture::DataType;
  const std::vector<DataType> exp_out = {
      30.,    174.,   446.,   846.,   190.,   590.,   1118.,  1774.,  540.,
      1596.,  2908.,  4476.,  1374.,  2030.,  2814.,  3726.,  2558.,  3470.,
      4510.,  5678.,  510.,   1422.,  2462.,  3630.,  670.,   1838.,  3134.,
      4558.,  4572.,  7164.,  10012., 13116., 4926.,  6350.,  7902.,  9582.,
      6110.,  7790.,  9598.,  11534., 1340.,  3676.,  6268.,  9116.,  3708.,
      6556.,  9660.,  13020., 13880., 20088., 26808., 34040., 12220., 15580.,
      19196., 23068., 16636., 20508., 24636., 29020., 6974.,  8398.,  9950.,
      11630., 9182.,  10862., 12670., 14606., 21596., 25212., 29084., 33212.,
      13438., 15374., 17438., 19630., 16670., 18862., 21182., 23630., 13598.,
      15790., 18110., 20558., 15806., 18254., 20830., 23534., 37916., 43068.,
      48476., 54140., 23134., 25838., 28670., 31630., 26366., 29326., 32414.,
      35630.};
  const std::array<int, 4> in_shape = {{1, 5, 5, 4}};
  const int multiplier = 4;
  const auto padding = sycldnn::PaddingMode::VALID;
  const DataType max_input_val = 2048.0;
  this->run_input_backprop_test(exp_out, in_shape, multiplier, padding,
                                max_input_val);
}
TYPED_TEST(InputBackpropWindow3Stride2, SAME1x5x6x1x1) {
  using DataType = typename TestFixture::DataType;
  const std::vector<DataType> exp_out = {
      4.,   5.,  14.,  10., 24., 15., 11., 16., 40., 26.,
      60.,  36., 16.,  20., 44., 25., 54., 30., 35., 46.,
      100., 56., 120., 66., 28., 35., 74., 40., 84., 45.};
  const std::array<int, 4> in_shape = {{1, 5, 6, 1}};
  const int multiplier = 1;
  const auto padding = sycldnn::PaddingMode::SAME;
  const DataType max_input_val = 2048.0;
  this->run_input_backprop_test(exp_out, in_shape, multiplier, padding,
                                max_input_val);
}
TYPED_TEST(InputBackpropWindow3Stride2, VALID1x5x6x1x1) {
  using DataType = typename TestFixture::DataType;
  const std::vector<DataType> exp_out = {
      1.,  2.,  5., 4.,  6.,  0.,  4.,  5.,  14., 10., 12., 0.,  10., 14., 36.,
      24., 30., 0., 12., 15., 34., 20., 24., 0.,  21., 24., 55., 32., 36., 0.};
  const std::array<int, 4> in_shape = {{1, 5, 6, 1}};
  const int multiplier = 1;
  const auto padding = sycldnn::PaddingMode::VALID;
  const DataType max_input_val = 2048.0;
  this->run_input_backprop_test(exp_out, in_shape, multiplier, padding,
                                max_input_val);
}
TYPED_TEST(InputBackpropWindow3Stride2, SAME1x5x6x1x2) {
  using DataType = typename TestFixture::DataType;
  const std::vector<DataType> exp_out = {
      23.,  29.,  88.,  67.,  164., 105., 64.,  100., 260., 176.,
      412., 252., 113., 143., 316., 181., 392., 219., 244., 328.,
      716., 404., 868., 480., 203., 257., 544., 295., 620., 333.};
  const std::array<int, 4> in_shape = {{1, 5, 6, 1}};
  const int multiplier = 2;
  const auto padding = sycldnn::PaddingMode::SAME;
  const DataType max_input_val = 2048.0;
  this->run_input_backprop_test(exp_out, in_shape, multiplier, padding,
                                max_input_val);
}
TYPED_TEST(InputBackpropWindow3Stride2, VALID1x5x6x1x2) {
  using DataType = typename TestFixture::DataType;
  const std::vector<DataType> exp_out = {
      5.,   11.,  28.,  25., 39.,  0.,   23.,  29.,  88.,  67.,
      81.,  0.,   58.,  86., 232., 162., 206., 0.,   83.,  105.,
      240., 143., 173., 0.,  149., 171., 396., 233., 263., 0.};
  const std::array<int, 4> in_shape = {{1, 5, 6, 1}};
  const int multiplier = 2;
  const auto padding = sycldnn::PaddingMode::VALID;
  const DataType max_input_val = 2048.0;
  this->run_input_backprop_test(exp_out, in_shape, multiplier, padding,
                                max_input_val);
}
TYPED_TEST(InputBackpropWindow3Stride2, SAME1x5x6x1x4) {
  using DataType = typename TestFixture::DataType;
  const std::vector<DataType> exp_out = {
      150.,  190.,  612.,  486.,  1204., 782.,  420.,  692.,  1848., 1284.,
      3032., 1876., 846.,  1078., 2388., 1374., 2980., 1670., 1812., 2468.,
      5400., 3060., 6584., 3652., 1542., 1966., 4164., 2262., 4756., 2558.};
  const std::array<int, 4> in_shape = {{1, 5, 6, 1}};
  const int multiplier = 4;
  const auto padding = sycldnn::PaddingMode::SAME;
  const DataType max_input_val = 2048.0;
  this->run_input_backprop_test(exp_out, in_shape, multiplier, padding,
                                max_input_val);
}
TYPED_TEST(InputBackpropWindow3Stride2, VALID1x5x6x1x4) {
  using DataType = typename TestFixture::DataType;
  const std::vector<DataType> exp_out = {
      30.,   70.,   180.,  174., 278.,  0.,    150.,  190.,  612.,  486.,
      590.,  0.,    380.,  588., 1640., 1180., 1516., 0.,    614.,  782.,
      1796., 1078., 1310., 0.,   1118., 1286., 2996., 1774., 2006., 0.};
  const std::array<int, 4> in_shape = {{1, 5, 6, 1}};
  const int multiplier = 4;
  const auto padding = sycldnn::PaddingMode::VALID;
  const DataType max_input_val = 2048.0;
  this->run_input_backprop_test(exp_out, in_shape, multiplier, padding,
                                max_input_val);
}
TYPED_TEST(InputBackpropWindow3Stride2, SAME1x5x6x2x1) {
  using DataType = typename TestFixture::DataType;
  const std::vector<DataType> exp_out = {
      7.,   16.,  9.,   20.,  32.,  56.,  27.,  40.,  68.,  96.,  45.,  60.,
      20.,  44.,  36.,  64.,  100., 160., 72.,  104., 172., 240., 108., 144.,
      49.,  64.,  63.,  80.,  140., 176., 81.,  100., 176., 216., 99.,  120.,
      104., 140., 144., 184., 316., 400., 180., 224., 388., 480., 216., 264.,
      91.,  112., 117., 140., 248., 296., 135., 160., 284., 336., 153., 180.};
  const std::array<int, 4> in_shape = {{1, 5, 6, 2}};
  const int multiplier = 1;
  const auto padding = sycldnn::PaddingMode::SAME;
  const DataType max_input_val = 2048.0;
  this->run_input_backprop_test(exp_out, in_shape, multiplier, padding,
                                max_input_val);
}
TYPED_TEST(InputBackpropWindow3Stride2, VALID1x5x6x2x1) {
  using DataType = typename TestFixture::DataType;
  const std::vector<DataType> exp_out = {
      1.,  4.,  3.,  8.,  8.,   20.,  9.,   16.,  15.,  24.,  0., 0.,
      7.,  16., 9.,  20., 32.,  56.,  27.,  40.,  33.,  48.,  0., 0.,
      18., 40., 30., 56., 88.,  144., 66.,  96.,  86.,  120., 0., 0.,
      35., 48., 45., 60., 104., 136., 63.,  80.,  77.,  96.,  0., 0.,
      65., 84., 75., 96., 176., 220., 105., 128., 119., 144., 0., 0.};
  const std::array<int, 4> in_shape = {{1, 5, 6, 2}};
  const int multiplier = 1;
  const auto padding = sycldnn::PaddingMode::VALID;
  const DataType max_input_val = 2048.0;
  this->run_input_backprop_test(exp_out, in_shape, multiplier, padding,
                                max_input_val);
}
TYPED_TEST(InputBackpropWindow3Stride2, SAME1x5x6x2x2) {
  using DataType = typename TestFixture::DataType;
  const std::vector<DataType> exp_out = {
      41.,   109.,  53.,   137.,  214.,  398.,  193.,  293.,  494.,  710.,
      333.,  449.,  118.,  302.,  238.,  454.,  692.,  1156., 518.,  766.,
      1252., 1780., 798.,  1078., 365.,  481.,  473.,  605.,  1054., 1334.,
      613.,  761.,  1334., 1646., 753.,  917.,  766.,  1046., 1078., 1390.,
      2372., 3028., 1358., 1702., 2932., 3652., 1638., 2014., 689.,  853.,
      893.,  1073., 1894., 2270., 1033., 1229., 2174., 2582., 1173., 1385.};
  const std::array<int, 4> in_shape = {{1, 5, 6, 2}};
  const int multiplier = 2;
  const auto padding = sycldnn::PaddingMode::SAME;
  const DataType max_input_val = 2048.0;
  this->run_input_backprop_test(exp_out, in_shape, multiplier, padding,
                                max_input_val);
}
TYPED_TEST(InputBackpropWindow3Stride2, VALID1x5x6x2x2) {
  using DataType = typename TestFixture::DataType;
  const std::vector<DataType> exp_out = {
      5.,   25.,  17.,  53.,  46.,   134.,  61.,  113., 105., 173.,  0., 0.,
      41.,  109., 53.,  137., 214.,  398.,  193., 293., 237., 353.,  0., 0.,
      106., 274., 194., 394., 604.,  1036., 474., 706., 626., 890.,  0., 0.,
      257., 357., 333., 449., 774.,  1022., 473., 605., 581., 729.,  0., 0.,
      485., 633., 561., 725., 1326., 1670., 797., 977., 905., 1101., 0., 0.};
  const std::array<int, 4> in_shape = {{1, 5, 6, 2}};
  const int multiplier = 2;
  const auto padding = sycldnn::PaddingMode::VALID;
  const DataType max_input_val = 2048.0;
  this->run_input_backprop_test(exp_out, in_shape, multiplier, padding,
                                max_input_val);
}
TYPED_TEST(InputBackpropWindow3Stride2, SAME1x5x6x2x4) {
  using DataType = typename TestFixture::DataType;
  const std::vector<DataType> exp_out = {
      270.,   798.,   350.,   1006.,  1548.,  2988.,  1454.,  2238.,  3756.,
      5452.,  2558.,  3470.,  780.,   2220.,  1708.,  3404.,  5112.,  8760.,
      3916.,  5868.,  9528.,  13688., 6124.,  8332.,  2814.,  3726.,  3662.,
      4702.,  8172.,  10380., 4766.,  5934.,  10380., 12844., 5870.,  7166.,
      5868.,  8076.,  8332.,  10796., 18360., 23544., 10540., 13260., 22776.,
      28472., 12748., 15724., 5358.,  6654.,  6974.,  8398.,  14796., 17772.,
      8078.,  9630.,  17004., 20236., 9182.,  10862.};
  const std::array<int, 4> in_shape = {{1, 5, 6, 2}};
  const int multiplier = 4;
  const auto padding = sycldnn::PaddingMode::SAME;
  const DataType max_input_val = 2048.0;
  this->run_input_backprop_test(exp_out, in_shape, multiplier, padding,
                                max_input_val);
}
TYPED_TEST(InputBackpropWindow3Stride2, VALID1x5x6x2x4) {
  using DataType = typename TestFixture::DataType;
  const std::vector<DataType> exp_out = {
      30.,   174.,  110.,   382.,   300.,  972.,  446.,  846.,  782.,  1310.,
      0.,    0.,    270.,   798.,   350.,  1006., 1548., 2988., 1454., 2238.,
      1790., 2702., 0.,     0.,     700.,  2012., 1372., 2940., 4440., 7832.,
      3580., 5404., 4764.,  6844.,  0.,    0.,    1966., 2750., 2558., 3470.,
      5964., 7916., 3662.,  4702.,  4510., 5678., 0.,    0.,    3742., 4910.,
      4334., 5630., 10284., 13004., 6206., 7630., 7054., 8606., 0.,    0.};
  const std::array<int, 4> in_shape = {{1, 5, 6, 2}};
  const int multiplier = 4;
  const auto padding = sycldnn::PaddingMode::VALID;
  const DataType max_input_val = 2048.0;
  this->run_input_backprop_test(exp_out, in_shape, multiplier, padding,
                                max_input_val);
}
TYPED_TEST(InputBackpropWindow3Stride2, SAME1x5x6x4x1) {
  using DataType = typename TestFixture::DataType;
  const std::vector<DataType> exp_out = {
      13.,   28.,   45.,   64.,   17.,   36.,   57.,   80.,   86.,   128., 174.,
      224.,  85.,   108.,  133.,  160.,  222.,  272.,  326.,  384.,  153., 180.,
      209.,  240.,  38.,   80.,   126.,  176.,  94.,   144.,  198.,  256., 292.,
      400.,  516.,  640.,  230.,  288.,  350.,  416.,  564.,  688.,  820., 960.,
      366.,  432.,  502.,  576.,  169.,  196.,  225.,  256.,  221.,  252., 285.,
      320.,  494.,  560.,  630.,  704.,  289.,  324.,  361.,  400.,  630., 704.,
      782.,  864.,  357.,  396.,  437.,  480.,  350.,  416.,  486.,  560., 502.,
      576.,  654.,  736.,  1108., 1264., 1428., 1600., 638.,  720.,  806., 896.,
      1380., 1552., 1732., 1920., 774.,  864.,  958.,  1056., 325.,  364., 405.,
      448.,  425.,  468.,  513.,  560.,  902.,  992.,  1086., 1184., 493., 540.,
      589.,  640.,  1038., 1136., 1238., 1344., 561.,  612.,  665.,  720.};
  const std::array<int, 4> in_shape = {{1, 5, 6, 4}};
  const int multiplier = 1;
  const auto padding = sycldnn::PaddingMode::SAME;
  const DataType max_input_val = 2048.0;
  this->run_input_backprop_test(exp_out, in_shape, multiplier, padding,
                                max_input_val);
}
TYPED_TEST(InputBackpropWindow3Stride2, VALID1x5x6x4x1) {
  using DataType = typename TestFixture::DataType;
  const std::vector<DataType> exp_out = {
      1.,   4.,   9.,   16.,  5.,   12.,  21.,  32.,  14.,  32.,  54.,  80.,
      25.,  36.,  49.,  64.,  45.,  60.,  77.,  96.,  0.,   0.,   0.,   0.,
      13.,  28.,  45.,  64.,  17.,  36.,  57.,  80.,  86.,  128., 174., 224.,
      85.,  108., 133., 160., 105., 132., 161., 192., 0.,   0.,   0.,   0.,
      34.,  72.,  114., 160., 74.,  120., 170., 224., 252., 352., 460., 576.,
      210., 264., 322., 384., 282., 344., 410., 480., 0.,   0.,   0.,   0.,
      117., 140., 165., 192., 153., 180., 209., 240., 358., 416., 478., 544.,
      221., 252., 285., 320., 273., 308., 345., 384., 0.,   0.,   0.,   0.,
      225., 260., 297., 336., 261., 300., 341., 384., 622., 704., 790., 880.,
      377., 420., 465., 512., 429., 476., 525., 576., 0.,   0.,   0.,   0.};
  const std::array<int, 4> in_shape = {{1, 5, 6, 4}};
  const int multiplier = 1;
  const auto padding = sycldnn::PaddingMode::VALID;
  const DataType max_input_val = 2048.0;
  this->run_input_backprop_test(exp_out, in_shape, multiplier, padding,
                                max_input_val);
}
TYPED_TEST(InputBackpropWindow3Stride2, SAME1x5x6x4x2) {
  using DataType = typename TestFixture::DataType;
  const std::vector<DataType> exp_out = {
      77.,    193.,   325.,   473.,  101.,  249.,  413.,  593.,   610.,
      938.,   1298.,  1690.,  637.,  817.,  1013., 1225., 1682.,  2074.,
      2498.,  2954.,  1173.,  1385., 1613., 1857., 226.,  554.,   914.,
      1306.,  658.,   1050.,  1474., 1930., 2132., 2980., 3892.,  4868.,
      1730.,  2186.,  2674.,  3194., 4276., 5252., 6292., 7396.,  2802.,
      3322.,  3874.,  4458.,  1301., 1513., 1741., 1985., 1709.,  1953.,
      2213.,  2489.,  3826.,  4346., 4898., 5482., 2245., 2521.,  2813.,
      3121.,  4898.,  5482.,  6098., 6746., 2781., 3089., 3413.,  3753.,
      2674.,  3194.,  3746.,  4330., 3874., 4458., 5074., 5722.,  8564.,
      9796.,  11092., 12452., 4946., 5594., 6274., 6986., 10708., 12068.,
      13492., 14980., 6018.,  6730., 7474., 8250., 2525., 2833.,  3157.,
      3497.,  3317.,  3657.,  4013., 4385., 7042., 7754., 8498.,  9274.,
      3853.,  4225.,  4613.,  5017., 8114., 8890., 9698., 10538., 4389.,
      4793.,  5213.,  5649.};
  const std::array<int, 4> in_shape = {{1, 5, 6, 4}};
  const int multiplier = 2;
  const auto padding = sycldnn::PaddingMode::SAME;
  const DataType max_input_val = 2048.0;
  this->run_input_backprop_test(exp_out, in_shape, multiplier, padding,
                                max_input_val);
}
TYPED_TEST(InputBackpropWindow3Stride2, VALID1x5x6x4x2) {
  using DataType = typename TestFixture::DataType;
  const std::vector<DataType> exp_out = {
      5.,    25.,   61.,   113.,  29.,   81.,   149.,  233.,  82.,   218.,
      386.,  586.,  181.,  265.,  365.,  481.,  333.,  449.,  581.,  729.,
      0.,    0.,    0.,    0.,    77.,   193.,  325.,  473.,  101.,  249.,
      413.,  593.,  610.,  938.,  1298., 1690., 637.,  817.,  1013., 1225.,
      789.,  1001., 1229., 1473., 0.,    0.,    0.,    0.,    202.,  498.,
      826.,  1186., 506.,  866.,  1258., 1682., 1828., 2612., 3460., 4372.,
      1578., 2002., 2458., 2946., 2138., 2626., 3146., 3698., 0.,    0.,
      0.,    0.,    893.,  1073., 1269., 1481., 1173., 1385., 1613., 1857.,
      2754., 3210., 3698., 4218., 1709., 1953., 2213., 2489., 2117., 2393.,
      2685., 2993., 0.,    0.,    0.,    0.,    1733., 2009., 2301., 2609.,
      2013., 2321., 2645., 2985., 4818., 5466., 6146., 6858., 2933., 3273.,
      3629., 4001., 3341., 3713., 4101., 4505., 0.,    0.,    0.,    0.};
  const std::array<int, 4> in_shape = {{1, 5, 6, 4}};
  const int multiplier = 2;
  const auto padding = sycldnn::PaddingMode::VALID;
  const DataType max_input_val = 2048.0;
  this->run_input_backprop_test(exp_out, in_shape, multiplier, padding,
                                max_input_val);
}
TYPED_TEST(InputBackpropWindow3Stride2, SAME1x5x6x4x4) {
  using DataType = typename TestFixture::DataType;
  const std::vector<DataType> exp_out = {
      510.,    1422.,   2462.,  3630.,  670.,   1838.,  3134.,  4558.,  4572.,
      7164.,   10012.,  13116., 4926.,  6350.,  7902.,  9582.,  13084., 16188.,
      19548.,  23164.,  9182.,  10862., 12670., 14606., 1500.,  4092.,  6940.,
      10044.,  4892.,   7996.,  11356., 14972., 16248., 22968., 30200., 37944.,
      13404.,  17020.,  20892., 25020., 33272., 41016., 49272., 58040., 21916.,
      26044.,  30428.,  35068., 10206., 11886., 13694., 15630., 13438., 15374.,
      17438.,  19630.,  30108., 34236., 38620., 43260., 17694., 19886., 22206.,
      24654.,  38620.,  43260., 48156., 53308., 21950., 24398., 26974., 29678.,
      20892.,  25020.,  29404., 34044., 30428., 35068., 39964., 45116., 67320.,
      77112.,  87416.,  98232., 38940., 44092., 49500., 55164., 84344., 95160.,
      106488., 118328., 47452., 53116., 59036., 65212., 19902., 22350., 24926.,
      27630.,  26206.,  28910., 31742., 34702., 55644., 61308., 67228., 73404.,
      30462.,  33422.,  36510., 39726., 64156., 70332., 76764., 83452., 34718.,
      37934.,  41278.,  44750.};
  const std::array<int, 4> in_shape = {{1, 5, 6, 4}};
  const int multiplier = 4;
  const auto padding = sycldnn::PaddingMode::SAME;
  const DataType max_input_val = 2048.0;
  this->run_input_backprop_test(exp_out, in_shape, multiplier, padding,
                                max_input_val);
}
TYPED_TEST(InputBackpropWindow3Stride2, VALID1x5x6x4x4) {
  using DataType = typename TestFixture::DataType;
  const std::vector<DataType> exp_out = {
      30.,    174.,   446.,   846.,   190.,   590.,   1118.,  1774.,  540.,
      1596.,  2908.,  4476.,  1374.,  2030.,  2814.,  3726.,  2558.,  3470.,
      4510.,  5678.,  0.,     0.,     0.,     0.,     510.,   1422.,  2462.,
      3630.,  670.,   1838.,  3134.,  4558.,  4572.,  7164.,  10012., 13116.,
      4926.,  6350.,  7902.,  9582.,  6110.,  7790.,  9598.,  11534., 0.,
      0.,     0.,     0.,     1340.,  3676.,  6268.,  9116.,  3708.,  6556.,
      9660.,  13020., 13880., 20088., 26808., 34040., 12220., 15580., 19196.,
      23068., 16636., 20508., 24636., 29020., 0.,     0.,     0.,     0.,
      6974.,  8398.,  9950.,  11630., 9182.,  10862., 12670., 14606., 21596.,
      25212., 29084., 33212., 13438., 15374., 17438., 19630., 16670., 18862.,
      21182., 23630., 0.,     0.,     0.,     0.,     13598., 15790., 18110.,
      20558., 15806., 18254., 20830., 23534., 37916., 43068., 48476., 54140.,
      23134., 25838., 28670., 31630., 26366., 29326., 32414., 35630., 0.,
      0.,     0.,     0.};
  const std::array<int, 4> in_shape = {{1, 5, 6, 4}};
  const int multiplier = 4;
  const auto padding = sycldnn::PaddingMode::VALID;
  const DataType max_input_val = 2048.0;
  this->run_input_backprop_test(exp_out, in_shape, multiplier, padding,
                                max_input_val);
}
TYPED_TEST(InputBackpropWindow3Stride2, SAME1x5x8x1x1) {
  using DataType = typename TestFixture::DataType;
  const std::vector<DataType> exp_out = {
      4.,   5.,  14.,  10., 24., 15., 34., 20., 12.,  18., 44.,  28., 64.,  38.,
      84.,  48., 20.,  25., 54., 30., 64., 35., 74.,  40., 44.,  58., 124., 68.,
      144., 78., 164., 88., 36., 45., 94., 50., 104., 55., 114., 60.};
  const std::array<int, 4> in_shape = {{1, 5, 8, 1}};
  const int multiplier = 1;
  const auto padding = sycldnn::PaddingMode::SAME;
  const DataType max_input_val = 2048.0;
  this->run_input_backprop_test(exp_out, in_shape, multiplier, padding,
                                max_input_val);
}
TYPED_TEST(InputBackpropWindow3Stride2, VALID1x5x8x1x1) {
  using DataType = typename TestFixture::DataType;
  const std::vector<DataType> exp_out = {
      1.,  2.,  5.,  4.,  9.,  6.,  9.,  0.,  4.,  5.,  14., 10., 24., 15.,
      18., 0.,  11., 16., 40., 26., 60., 36., 45., 0.,  16., 20., 44., 25.,
      54., 30., 36., 0.,  28., 32., 71., 40., 87., 48., 54., 0.};
  const std::array<int, 4> in_shape = {{1, 5, 8, 1}};
  const int multiplier = 1;
  const auto padding = sycldnn::PaddingMode::VALID;
  const DataType max_input_val = 2048.0;
  this->run_input_backprop_test(exp_out, in_shape, multiplier, padding,
                                max_input_val);
}
TYPED_TEST(InputBackpropWindow3Stride2, SAME1x5x8x1x2) {
  using DataType = typename TestFixture::DataType;
  const std::vector<DataType> exp_out = {
      23.,   29.,  88.,  67.,  164., 105., 240., 143., 70.,   114.,
      288.,  190., 440., 266., 592., 342., 143., 181., 392.,  219.,
      468.,  257., 544., 295., 310., 418., 896., 494., 1048., 570.,
      1200., 646., 263., 333., 696., 371., 772., 409., 848.,  447.};
  const std::array<int, 4> in_shape = {{1, 5, 8, 1}};
  const int multiplier = 2;
  const auto padding = sycldnn::PaddingMode::SAME;
  const DataType max_input_val = 2048.0;
  this->run_input_backprop_test(exp_out, in_shape, multiplier, padding,
                                max_input_val);
}
TYPED_TEST(InputBackpropWindow3Stride2, VALID1x5x8x1x2) {
  using DataType = typename TestFixture::DataType;
  const std::vector<DataType> exp_out = {
      5.,   11.,  28.,  25.,  56.,  39.,  61.,  0.,   23.,  29.,
      88.,  67.,  164., 105., 127., 0.,   64.,  100., 260., 176.,
      412., 252., 320., 0.,   113., 143., 316., 181., 392., 219.,
      265., 0.,   203., 233., 520., 295., 644., 357., 403., 0.};
  const std::array<int, 4> in_shape = {{1, 5, 8, 1}};
  const int multiplier = 2;
  const auto padding = sycldnn::PaddingMode::VALID;
  const DataType max_input_val = 2048.0;
  this->run_input_backprop_test(exp_out, in_shape, multiplier, padding,
                                max_input_val);
}
TYPED_TEST(InputBackpropWindow3Stride2, SAME1x5x8x1x4) {
  using DataType = typename TestFixture::DataType;
  const std::vector<DataType> exp_out = {
      150.,  190.,  612.,  486.,  1204., 782.,  1796., 1078., 460.,  796.,
      2056., 1388., 3240., 1980., 4424., 2572., 1078., 1374., 2980., 1670.,
      3572., 1966., 4164., 2262., 2316., 3164., 6792., 3756., 7976., 4348.,
      9160., 4940., 2006., 2558., 5348., 2854., 5940., 3150., 6532., 3446.};
  const std::array<int, 4> in_shape = {{1, 5, 8, 1}};
  const int multiplier = 4;
  const auto padding = sycldnn::PaddingMode::SAME;
  const DataType max_input_val = 2048.0;
  this->run_input_backprop_test(exp_out, in_shape, multiplier, padding,
                                max_input_val);
}
TYPED_TEST(InputBackpropWindow3Stride2, VALID1x5x8x1x4) {
  using DataType = typename TestFixture::DataType;
  const std::vector<DataType> exp_out = {
      30.,   70.,   180.,  174.,  388.,  278.,  446.,  0.,    150.,  190.,
      612.,  486.,  1204., 782.,  950.,  0.,    420.,  692.,  1848., 1284.,
      3032., 1876., 2404., 0.,    846.,  1078., 2388., 1374., 2980., 1670.,
      2030., 0.,    1542., 1774., 3972., 2262., 4948., 2750., 3110., 0.};
  const std::array<int, 4> in_shape = {{1, 5, 8, 1}};
  const int multiplier = 4;
  const auto padding = sycldnn::PaddingMode::VALID;
  const DataType max_input_val = 2048.0;
  this->run_input_backprop_test(exp_out, in_shape, multiplier, padding,
                                max_input_val);
}
TYPED_TEST(InputBackpropWindow3Stride2, SAME1x5x8x2x1) {
  using DataType = typename TestFixture::DataType;
  const std::vector<DataType> exp_out = {
      7.,   16.,  9.,   20.,  32.,  56.,  27.,  40.,  68.,  96.,  45.,  60.,
      104., 136., 63.,  80.,  22.,  48.,  42.,  72.,  112., 176., 78.,  112.,
      184., 256., 114., 152., 256., 336., 150., 192., 63.,  80.,  81.,  100.,
      176., 216., 99.,  120., 212., 256., 117., 140., 248., 296., 135., 160.,
      134., 176., 186., 232., 400., 496., 222., 272., 472., 576., 258., 312.,
      544., 656., 294., 352., 119., 144., 153., 180., 320., 376., 171., 200.,
      356., 416., 189., 220., 392., 456., 207., 240.};
  const std::array<int, 4> in_shape = {{1, 5, 8, 2}};
  const int multiplier = 1;
  const auto padding = sycldnn::PaddingMode::SAME;
  const DataType max_input_val = 2048.0;
  this->run_input_backprop_test(exp_out, in_shape, multiplier, padding,
                                max_input_val);
}
TYPED_TEST(InputBackpropWindow3Stride2, VALID1x5x8x2x1) {
  using DataType = typename TestFixture::DataType;
  const std::vector<DataType> exp_out = {
      1.,   4.,   3.,   8.,   8.,   20.,  9.,   16.,  20.,  36.,  15.,  24.,
      25.,  36.,  0.,   0.,   7.,   16.,  9.,   20.,  32.,  56.,  27.,  40.,
      68.,  96.,  45.,  60.,  55.,  72.,  0.,   0.,   20.,  44.,  36.,  64.,
      100., 160., 72.,  104., 172., 240., 108., 144., 140., 180., 0.,   0.,
      49.,  64.,  63.,  80.,  140., 176., 81.,  100., 176., 216., 99.,  120.,
      121., 144., 0.,   0.,   91.,  112., 105., 128., 236., 284., 135., 160.,
      296., 348., 165., 192., 187., 216., 0.,   0.};
  const std::array<int, 4> in_shape = {{1, 5, 8, 2}};
  const int multiplier = 1;
  const auto padding = sycldnn::PaddingMode::VALID;
  const DataType max_input_val = 2048.0;
  this->run_input_backprop_test(exp_out, in_shape, multiplier, padding,
                                max_input_val);
}
TYPED_TEST(InputBackpropWindow3Stride2, SAME1x5x8x2x2) {
  using DataType = typename TestFixture::DataType;
  const std::vector<DataType> exp_out = {
      41.,   109.,  53.,   137.,  214.,  398.,  193.,  293.,  494.,  710.,
      333.,  449.,  774.,  1022., 473.,  605.,  130.,  330.,  282.,  514.,
      780.,  1276., 562.,  826.,  1340., 1900., 842.,  1138., 1900., 2524.,
      1122., 1450., 473.,  605.,  613.,  761.,  1334., 1646., 753.,  917.,
      1614., 1958., 893.,  1073., 1894., 2270., 1033., 1229., 994.,  1322.,
      1402., 1762., 3020., 3772., 1682., 2074., 3580., 4396., 1962., 2386.,
      4140., 5020., 2242., 2698., 905.,  1101., 1173., 1385., 2454., 2894.,
      1313., 1541., 2734., 3206., 1453., 1697., 3014., 3518., 1593., 1853.};
  const std::array<int, 4> in_shape = {{1, 5, 8, 2}};
  const int multiplier = 2;
  const auto padding = sycldnn::PaddingMode::SAME;
  const DataType max_input_val = 2048.0;
  this->run_input_backprop_test(exp_out, in_shape, multiplier, padding,
                                max_input_val);
}
TYPED_TEST(InputBackpropWindow3Stride2, VALID1x5x8x2x2) {
  using DataType = typename TestFixture::DataType;
  const std::vector<DataType> exp_out = {
      5.,    25.,   17.,   53.,   46.,   134.,  61.,   113.,  134.,  254.,
      105.,  173.,  181.,  265.,  0.,    0.,    41.,   109.,  53.,   137.,
      214.,  398.,  193.,  293.,  494.,  710.,  333.,  449.,  409.,  541.,
      0.,    0.,    118.,  302.,  238.,  454.,  692.,  1156., 518.,  766.,
      1252., 1780., 798.,  1078., 1046., 1358., 0.,    0.,    365.,  481.,
      473.,  605.,  1054., 1334., 613.,  761.,  1334., 1646., 753.,  917.,
      925.,  1105., 0.,    0.,    689.,  853.,  797.,  977.,  1798., 2174.,
      1033., 1229., 2270., 2678., 1269., 1481., 1441., 1669., 0.,    0.};
  const std::array<int, 4> in_shape = {{1, 5, 8, 2}};
  const int multiplier = 2;
  const auto padding = sycldnn::PaddingMode::VALID;
  const DataType max_input_val = 2048.0;
  this->run_input_backprop_test(exp_out, in_shape, multiplier, padding,
                                max_input_val);
}
TYPED_TEST(InputBackpropWindow3Stride2, SAME1x5x8x2x4) {
  using DataType = typename TestFixture::DataType;
  const std::vector<DataType> exp_out = {
      270.,   798.,   350.,   1006.,  1548.,  2988.,  1454.,  2238.,  3756.,
      5452.,  2558.,  3470.,  5964.,  7916.,  3662.,  4702.,  860.,   2428.,
      2044.,  3868.,  5784.,  9688.,  4252.,  6332.,  10200., 14616., 6460.,
      8796.,  14616., 19544., 8668.,  11260., 3662.,  4702.,  4766.,  5934.,
      10380., 12844., 5870.,  7166.,  12588., 15308., 6974.,  8398.,  14796.,
      17772., 8078.,  9630.,  7644.,  10236., 10876., 13724., 23448., 29400.,
      13084., 16188., 27864., 34328., 15292., 18652., 32280., 39256., 17500.,
      21116., 7054.,  8606.,  9182.,  10862., 19212., 22700., 10286., 12094.,
      21420., 25164., 11390., 13326., 23628., 27628., 12494., 14558.};
  const std::array<int, 4> in_shape = {{1, 5, 8, 2}};
  const int multiplier = 4;
  const auto padding = sycldnn::PaddingMode::SAME;
  const DataType max_input_val = 2048.0;
  this->run_input_backprop_test(exp_out, in_shape, multiplier, padding,
                                max_input_val);
}
TYPED_TEST(InputBackpropWindow3Stride2, VALID1x5x8x2x4) {
  using DataType = typename TestFixture::DataType;
  const std::vector<DataType> exp_out = {
      30.,    174.,   110.,   382.,   300.,   972.,   446.,   846.,  972.,
      1900.,  782.,   1310.,  1374.,  2030.,  0.,     0.,     270.,  798.,
      350.,   1006.,  1548.,  2988.,  1454.,  2238.,  3756.,  5452., 2558.,
      3470.,  3150.,  4190.,  0.,     0.,     780.,   2220.,  1708., 3404.,
      5112.,  8760.,  3916.,  5868.,  9528.,  13688., 6124.,  8332., 8076.,
      10540., 0.,     0.,     2814.,  3726.,  3662.,  4702.,  8172., 10380.,
      4766.,  5934.,  10380., 12844., 5870.,  7166.,  7230.,  8654., 0.,
      0.,     5358.,  6654.,  6206.,  7630.,  14028., 17004., 8078., 9630.,
      17772., 21004., 9950.,  11630., 11310., 13118., 0.,     0.};
  const std::array<int, 4> in_shape = {{1, 5, 8, 2}};
  const int multiplier = 4;
  const auto padding = sycldnn::PaddingMode::VALID;
  const DataType max_input_val = 2048.0;
  this->run_input_backprop_test(exp_out, in_shape, multiplier, padding,
                                max_input_val);
}
TYPED_TEST(InputBackpropWindow3Stride2, SAME1x5x8x4x1) {
  using DataType = typename TestFixture::DataType;
  const std::vector<DataType> exp_out = {
      13.,   28.,   45.,   64.,   17.,   36.,   57.,   80.,   86.,   128.,
      174.,  224.,  85.,   108.,  133.,  160.,  222.,  272.,  326.,  384.,
      153.,  180.,  209.,  240.,  358.,  416.,  478.,  544.,  221.,  252.,
      285.,  320.,  42.,   88.,   138.,  192.,  114.,  168.,  226.,  288.,
      332.,  448.,  572.,  704.,  250.,  312.,  378.,  448.,  604.,  736.,
      876.,  1024., 386.,  456.,  530.,  608.,  876.,  1024., 1180., 1344.,
      522.,  600.,  682.,  768.,  221.,  252.,  285.,  320.,  289.,  324.,
      361.,  400.,  630.,  704.,  782.,  864.,  357.,  396.,  437.,  480.,
      766.,  848.,  934.,  1024., 425.,  468.,  513.,  560.,  902.,  992.,
      1086., 1184., 493.,  540.,  589.,  640.,  458.,  536.,  618.,  704.,
      658.,  744.,  834.,  928.,  1420., 1600., 1788., 1984., 794.,  888.,
      986.,  1088., 1692., 1888., 2092., 2304., 930.,  1032., 1138., 1248.,
      1964., 2176., 2396., 2624., 1066., 1176., 1290., 1408., 429.,  476.,
      525.,  576.,  561.,  612.,  665.,  720.,  1174., 1280., 1390., 1504.,
      629.,  684.,  741.,  800.,  1310., 1424., 1542., 1664., 697.,  756.,
      817.,  880.,  1446., 1568., 1694., 1824., 765.,  828.,  893.,  960.};
  const std::array<int, 4> in_shape = {{1, 5, 8, 4}};
  const int multiplier = 1;
  const auto padding = sycldnn::PaddingMode::SAME;
  const DataType max_input_val = 2048.0;
  this->run_input_backprop_test(exp_out, in_shape, multiplier, padding,
                                max_input_val);
}
TYPED_TEST(InputBackpropWindow3Stride2, VALID1x5x8x4x1) {
  using DataType = typename TestFixture::DataType;
  const std::vector<DataType> exp_out = {
      1.,   4.,    9.,    16.,   5.,    12.,  21.,   32.,   14.,  32.,  54.,
      80.,  25.,   36.,   49.,   64.,   54.,  80.,   110.,  144., 45.,  60.,
      77.,  96.,   81.,   100.,  121.,  144., 0.,    0.,    0.,   0.,   13.,
      28.,  45.,   64.,   17.,   36.,   57.,  80.,   86.,   128., 174., 224.,
      85.,  108.,  133.,  160.,  222.,  272., 326.,  384.,  153., 180., 209.,
      240., 189.,  220.,  253.,  288.,  0.,   0.,    0.,    0.,   38.,  80.,
      126., 176.,  94.,   144.,  198.,  256., 292.,  400.,  516., 640., 230.,
      288., 350.,  416.,  564.,  688.,  820., 960.,  366.,  432., 502., 576.,
      486., 560.,  638.,  720.,  0.,    0.,   0.,    0.,    169., 196., 225.,
      256., 221.,  252.,  285.,  320.,  494., 560.,  630.,  704., 289., 324.,
      361., 400.,  630.,  704.,  782.,  864., 357.,  396.,  437., 480., 441.,
      484., 529.,  576.,  0.,    0.,    0.,   0.,    325.,  364., 405., 448.,
      377., 420.,  465.,  512.,  854.,  944., 1038., 1136., 493., 540., 589.,
      640., 1086., 1184., 1286., 1392., 609., 660.,  713.,  768., 693., 748.,
      805., 864.,  0.,    0.,    0.,    0.};
  const std::array<int, 4> in_shape = {{1, 5, 8, 4}};
  const int multiplier = 1;
  const auto padding = sycldnn::PaddingMode::VALID;
  const DataType max_input_val = 2048.0;
  this->run_input_backprop_test(exp_out, in_shape, multiplier, padding,
                                max_input_val);
}
TYPED_TEST(InputBackpropWindow3Stride2, SAME1x5x8x4x2) {
  using DataType = typename TestFixture::DataType;
  const std::vector<DataType> exp_out = {
      77.,    193.,   325.,   473.,   101.,   249.,   413.,   593.,   610.,
      938.,   1298.,  1690.,  637.,   817.,   1013.,  1225.,  1682.,  2074.,
      2498.,  2954.,  1173.,  1385.,  1613.,  1857.,  2754.,  3210.,  3698.,
      4218.,  1709.,  1953.,  2213.,  2489.,  250.,   610.,   1002.,  1426.,
      810.,   1234.,  1690.,  2178.,  2436.,  3348.,  4324.,  5364.,  1882.,
      2370.,  2890.,  3442.,  4580.,  5620.,  6724.,  7892.,  2954.,  3506.,
      4090.,  4706.,  6724.,  7892.,  9124.,  10420., 4026.,  4642.,  5290.,
      5970.,  1709.,  1953.,  2213.,  2489.,  2245.,  2521.,  2813.,  3121.,
      4898.,  5482.,  6098.,  6746.,  2781.,  3089.,  3413.,  3753.,  5970.,
      6618.,  7298.,  8010.,  3317.,  3657.,  4013.,  4385.,  7042.,  7754.,
      8498.,  9274.,  3853.,  4225.,  4613.,  5017.,  3514.,  4130.,  4778.,
      5458.,  5098.,  5778.,  6490.,  7234.,  11012., 12436., 13924., 15476.,
      6170.,  6914.,  7690.,  8498.,  13156., 14708., 16324., 18004., 7242.,
      8050.,  8890.,  9762.,  15300., 16980., 18724., 20532., 8314.,  9186.,
      10090., 11026., 3341.,  3713.,  4101.,  4505.,  4389.,  4793.,  5213.,
      5649.,  9186.,  10026., 10898., 11802., 4925.,  5361.,  5813.,  6281.,
      10258., 11162., 12098., 13066., 5461.,  5929.,  6413.,  6913.,  11330.,
      12298., 13298., 14330., 5997.,  6497.,  7013.,  7545.};
  const std::array<int, 4> in_shape = {{1, 5, 8, 4}};
  const int multiplier = 2;
  const auto padding = sycldnn::PaddingMode::SAME;
  const DataType max_input_val = 2048.0;
  this->run_input_backprop_test(exp_out, in_shape, multiplier, padding,
                                max_input_val);
}
TYPED_TEST(InputBackpropWindow3Stride2, VALID1x5x8x4x2) {
  using DataType = typename TestFixture::DataType;
  const std::vector<DataType> exp_out = {
      5.,    25.,   61.,   113.,  29.,   81.,   149.,   233.,   82.,   218.,
      386.,  586.,  181.,  265.,  365.,  481.,  386.,   586.,   818.,  1082.,
      333.,  449.,  581.,  729.,  613.,  761.,  925.,   1105.,  0.,    0.,
      0.,    0.,    77.,   193.,  325.,  473.,  101.,   249.,   413.,  593.,
      610.,  938.,  1298., 1690., 637.,  817.,  1013.,  1225.,  1682., 2074.,
      2498., 2954., 1173., 1385., 1613., 1857., 1453.,  1697.,  1957., 2233.,
      0.,    0.,    0.,    0.,    226.,  554.,  914.,   1306.,  658.,  1050.,
      1474., 1930., 2132., 2980., 3892., 4868., 1730.,  2186.,  2674., 3194.,
      4276., 5252., 6292., 7396., 2802., 3322., 3874.,  4458.,  3746., 4330.,
      4946., 5594., 0.,    0.,    0.,    0.,    1301.,  1513.,  1741., 1985.,
      1709., 1953., 2213., 2489., 3826., 4346., 4898.,  5482.,  2245., 2521.,
      2813., 3121., 4898., 5482., 6098., 6746., 2781.,  3089.,  3413., 3753.,
      3445., 3785., 4141., 4513., 0.,    0.,    0.,     0.,     2525., 2833.,
      3157., 3497., 2933., 3273., 3629., 4001., 6658.,  7370.,  8114., 8890.,
      3853., 4225., 4613., 5017., 8498., 9274., 10082., 10922., 4773., 5177.,
      5597., 6033., 5437., 5873., 6325., 6793., 0.,     0.,     0.,    0.};
  const std::array<int, 4> in_shape = {{1, 5, 8, 4}};
  const int multiplier = 2;
  const auto padding = sycldnn::PaddingMode::VALID;
  const DataType max_input_val = 2048.0;
  this->run_input_backprop_test(exp_out, in_shape, multiplier, padding,
                                max_input_val);
}
TYPED_TEST(InputBackpropWindow3Stride2, SAME1x5x8x4x4) {
  using DataType = typename TestFixture::DataType;
  const std::vector<DataType> exp_out = {
      510.,    1422.,   2462.,   3630.,   670.,   1838.,  3134.,  4558.,
      4572.,   7164.,   10012.,  13116.,  4926.,  6350.,  7902.,  9582.,
      13084.,  16188.,  19548.,  23164.,  9182.,  10862., 12670., 14606.,
      21596.,  25212.,  29084.,  33212.,  13438., 15374., 17438., 19630.,
      1660.,   4508.,   7612.,   10972.,  6076.,  9436.,  13052., 16924.,
      18616.,  25848.,  33592.,  41848.,  14588., 18460., 22588., 26972.,
      35640.,  43896.,  52664.,  61944.,  23100., 27484., 32124., 37020.,
      52664.,  61944.,  71736.,  82040.,  31612., 36508., 41660., 47068.,
      13438.,  15374.,  17438.,  19630.,  17694., 19886., 22206., 24654.,
      38620.,  43260.,  48156.,  53308.,  21950., 24398., 26974., 29678.,
      47132.,  52284.,  57692.,  63356.,  26206., 28910., 31742., 34702.,
      55644.,  61308.,  67228.,  73404.,  30462., 33422., 36510., 39726.,
      27516.,  32412.,  37564.,  42972.,  40124., 45532., 51196., 57116.,
      86712.,  98040.,  109880., 122232., 48636., 54556., 60732., 67164.,
      103736., 116088., 128952., 142328., 57148., 63580., 70268., 77212.,
      120760., 134136., 148024., 162424., 65660., 72604., 79804., 87260.,
      26366.,  29326.,  32414.,  35630.,  34718., 37934., 41278., 44750.,
      72668.,  79356.,  86300.,  93500.,  38974., 42446., 46046., 49774.,
      81180.,  88380.,  95836.,  103548., 43230., 46958., 50814., 54798.,
      89692.,  97404.,  105372., 113596., 47486., 51470., 55582., 59822.};
  const std::array<int, 4> in_shape = {{1, 5, 8, 4}};
  const int multiplier = 4;
  const auto padding = sycldnn::PaddingMode::SAME;
  const DataType max_input_val = 2048.0;
  this->run_input_backprop_test(exp_out, in_shape, multiplier, padding,
                                max_input_val);
}
TYPED_TEST(InputBackpropWindow3Stride2, VALID1x5x8x4x4) {
  using DataType = typename TestFixture::DataType;
  const std::vector<DataType> exp_out = {
      30.,    174.,   446.,   846.,   190.,   590.,   1118.,  1774.,  540.,
      1596.,  2908.,  4476.,  1374.,  2030.,  2814.,  3726.,  2908.,  4476.,
      6300.,  8380.,  2558.,  3470.,  4510.,  5678.,  4766.,  5934.,  7230.,
      8654.,  0.,     0.,     0.,     0.,     510.,   1422.,  2462.,  3630.,
      670.,   1838.,  3134.,  4558.,  4572.,  7164.,  10012., 13116., 4926.,
      6350.,  7902.,  9582.,  13084., 16188., 19548., 23164., 9182.,  10862.,
      12670., 14606., 11390., 13326., 15390., 17582., 0.,     0.,     0.,
      0.,     1500.,  4092.,  6940.,  10044., 4892.,  7996.,  11356., 14972.,
      16248., 22968., 30200., 37944., 13404., 17020., 20892., 25020., 33272.,
      41016., 49272., 58040., 21916., 26044., 30428., 35068., 29404., 34044.,
      38940., 44092., 0.,     0.,     0.,     0.,     10206., 11886., 13694.,
      15630., 13438., 15374., 17438., 19630., 30108., 34236., 38620., 43260.,
      17694., 19886., 22206., 24654., 38620., 43260., 48156., 53308., 21950.,
      24398., 26974., 29678., 27230., 29934., 32766., 35726., 0.,     0.,
      0.,     0.,     19902., 22350., 24926., 27630., 23134., 25838., 28670.,
      31630., 52572., 58236., 64156., 70332., 30462., 33422., 36510., 39726.,
      67228., 73404., 79836., 86524., 37790., 41006., 44350., 47822., 43070.,
      46542., 50142., 53870., 0.,     0.,     0.,     0.};
  const std::array<int, 4> in_shape = {{1, 5, 8, 4}};
  const int multiplier = 4;
  const auto padding = sycldnn::PaddingMode::VALID;
  const DataType max_input_val = 2048.0;
  this->run_input_backprop_test(exp_out, in_shape, multiplier, padding,
                                max_input_val);
}
TYPED_TEST(InputBackpropWindow3Stride2, SAME1x6x5x1x1) {
  using DataType = typename TestFixture::DataType;
  const std::vector<DataType> exp_out = {
      2.,  5.,   4.,  9.,   6.,  5.,  14., 10., 24., 15.,
      16., 40.,  26., 60.,  36., 20., 44., 25., 54., 30.,
      46., 100., 56., 120., 66., 35., 74., 40., 84., 45.};
  const std::array<int, 4> in_shape = {{1, 6, 5, 1}};
  const int multiplier = 1;
  const auto padding = sycldnn::PaddingMode::SAME;
  const DataType max_input_val = 2048.0;
  this->run_input_backprop_test(exp_out, in_shape, multiplier, padding,
                                max_input_val);
}
TYPED_TEST(InputBackpropWindow3Stride2, VALID1x6x5x1x1) {
  using DataType = typename TestFixture::DataType;
  const std::vector<DataType> exp_out = {
      1.,  2.,  5.,  4.,  6.,  4.,  5.,  14., 10., 12., 10., 14., 36., 24., 30.,
      12., 15., 34., 20., 24., 21., 24., 55., 32., 36., 0.,  0.,  0.,  0.,  0.};
  const std::array<int, 4> in_shape = {{1, 6, 5, 1}};
  const int multiplier = 1;
  const auto padding = sycldnn::PaddingMode::VALID;
  const DataType max_input_val = 2048.0;
  this->run_input_backprop_test(exp_out, in_shape, multiplier, padding,
                                max_input_val);
}
TYPED_TEST(InputBackpropWindow3Stride2, SAME1x6x5x1x2) {
  using DataType = typename TestFixture::DataType;
  const std::vector<DataType> exp_out = {
      11.,  28.,  25.,  56.,  39.,  29.,  88.,  67.,  164., 105.,
      100., 260., 176., 412., 252., 143., 316., 181., 392., 219.,
      328., 716., 404., 868., 480., 257., 544., 295., 620., 333.};
  const std::array<int, 4> in_shape = {{1, 6, 5, 1}};
  const int multiplier = 2;
  const auto padding = sycldnn::PaddingMode::SAME;
  const DataType max_input_val = 2048.0;
  this->run_input_backprop_test(exp_out, in_shape, multiplier, padding,
                                max_input_val);
}
TYPED_TEST(InputBackpropWindow3Stride2, VALID1x6x5x1x2) {
  using DataType = typename TestFixture::DataType;
  const std::vector<DataType> exp_out = {
      5.,   11.,  28.,  25.,  39.,  23., 29.,  88.,  67.,  81.,
      58.,  86.,  232., 162., 206., 83., 105., 240., 143., 173.,
      149., 171., 396., 233., 263., 0.,  0.,   0.,   0.,   0.};
  const std::array<int, 4> in_shape = {{1, 6, 5, 1}};
  const int multiplier = 2;
  const auto padding = sycldnn::PaddingMode::VALID;
  const DataType max_input_val = 2048.0;
  this->run_input_backprop_test(exp_out, in_shape, multiplier, padding,
                                max_input_val);
}
TYPED_TEST(InputBackpropWindow3Stride2, SAME1x6x5x1x4) {
  using DataType = typename TestFixture::DataType;
  const std::vector<DataType> exp_out = {
      70.,   180.,  174.,  388.,  278.,  190.,  612.,  486.,  1204., 782.,
      692.,  1848., 1284., 3032., 1876., 1078., 2388., 1374., 2980., 1670.,
      2468., 5400., 3060., 6584., 3652., 1966., 4164., 2262., 4756., 2558.};
  const std::array<int, 4> in_shape = {{1, 6, 5, 1}};
  const int multiplier = 4;
  const auto padding = sycldnn::PaddingMode::SAME;
  const DataType max_input_val = 2048.0;
  this->run_input_backprop_test(exp_out, in_shape, multiplier, padding,
                                max_input_val);
}
TYPED_TEST(InputBackpropWindow3Stride2, VALID1x6x5x1x4) {
  using DataType = typename TestFixture::DataType;
  const std::vector<DataType> exp_out = {
      30.,   70.,   180.,  174.,  278.,  150., 190., 612.,  486.,  590.,
      380.,  588.,  1640., 1180., 1516., 614., 782., 1796., 1078., 1310.,
      1118., 1286., 2996., 1774., 2006., 0.,   0.,   0.,    0.,    0.};
  const std::array<int, 4> in_shape = {{1, 6, 5, 1}};
  const int multiplier = 4;
  const auto padding = sycldnn::PaddingMode::VALID;
  const DataType max_input_val = 2048.0;
  this->run_input_backprop_test(exp_out, in_shape, multiplier, padding,
                                max_input_val);
}
TYPED_TEST(InputBackpropWindow3Stride2, SAME1x6x5x2x1) {
  using DataType = typename TestFixture::DataType;
  const std::vector<DataType> exp_out = {
      3.,   8.,   8.,   20.,  9.,   16.,  20.,  36.,  15.,  24.,  9.,   20.,
      32.,  56.,  27.,  40.,  68.,  96.,  45.,  60.,  36.,  64.,  100., 160.,
      72.,  104., 172., 240., 108., 144., 63.,  80.,  140., 176., 81.,  100.,
      176., 216., 99.,  120., 144., 184., 316., 400., 180., 224., 388., 480.,
      216., 264., 117., 140., 248., 296., 135., 160., 284., 336., 153., 180.};
  const std::array<int, 4> in_shape = {{1, 6, 5, 2}};
  const int multiplier = 1;
  const auto padding = sycldnn::PaddingMode::SAME;
  const DataType max_input_val = 2048.0;
  this->run_input_backprop_test(exp_out, in_shape, multiplier, padding,
                                max_input_val);
}
TYPED_TEST(InputBackpropWindow3Stride2, VALID1x6x5x2x1) {
  using DataType = typename TestFixture::DataType;
  const std::vector<DataType> exp_out = {
      1.,   4.,   3.,  8.,  8.,  20.,  9.,  16., 15.,  24.,  7.,   16.,
      9.,   20.,  32., 56., 27., 40.,  33., 48., 18.,  40.,  30.,  56.,
      88.,  144., 66., 96., 86., 120., 35., 48., 45.,  60.,  104., 136.,
      63.,  80.,  77., 96., 65., 84.,  75., 96., 176., 220., 105., 128.,
      119., 144., 0.,  0.,  0.,  0.,   0.,  0.,  0.,   0.,   0.,   0.};
  const std::array<int, 4> in_shape = {{1, 6, 5, 2}};
  const int multiplier = 1;
  const auto padding = sycldnn::PaddingMode::VALID;
  const DataType max_input_val = 2048.0;
  this->run_input_backprop_test(exp_out, in_shape, multiplier, padding,
                                max_input_val);
}
TYPED_TEST(InputBackpropWindow3Stride2, SAME1x6x5x2x2) {
  using DataType = typename TestFixture::DataType;
  const std::vector<DataType> exp_out = {
      17.,   53.,   46.,   134.,  61.,   113.,  134.,  254.,  105.,  173.,
      53.,   137.,  214.,  398.,  193.,  293.,  494.,  710.,  333.,  449.,
      238.,  454.,  692.,  1156., 518.,  766.,  1252., 1780., 798.,  1078.,
      473.,  605.,  1054., 1334., 613.,  761.,  1334., 1646., 753.,  917.,
      1078., 1390., 2372., 3028., 1358., 1702., 2932., 3652., 1638., 2014.,
      893.,  1073., 1894., 2270., 1033., 1229., 2174., 2582., 1173., 1385.};
  const std::array<int, 4> in_shape = {{1, 6, 5, 2}};
  const int multiplier = 2;
  const auto padding = sycldnn::PaddingMode::SAME;
  const DataType max_input_val = 2048.0;
  this->run_input_backprop_test(exp_out, in_shape, multiplier, padding,
                                max_input_val);
}
TYPED_TEST(InputBackpropWindow3Stride2, VALID1x6x5x2x2) {
  using DataType = typename TestFixture::DataType;
  const std::vector<DataType> exp_out = {
      5.,   25.,  17.,  53.,  46.,   134.,  61.,  113., 105., 173.,
      41.,  109., 53.,  137., 214.,  398.,  193., 293., 237., 353.,
      106., 274., 194., 394., 604.,  1036., 474., 706., 626., 890.,
      257., 357., 333., 449., 774.,  1022., 473., 605., 581., 729.,
      485., 633., 561., 725., 1326., 1670., 797., 977., 905., 1101.,
      0.,   0.,   0.,   0.,   0.,    0.,    0.,   0.,   0.,   0.};
  const std::array<int, 4> in_shape = {{1, 6, 5, 2}};
  const int multiplier = 2;
  const auto padding = sycldnn::PaddingMode::VALID;
  const DataType max_input_val = 2048.0;
  this->run_input_backprop_test(exp_out, in_shape, multiplier, padding,
                                max_input_val);
}
TYPED_TEST(InputBackpropWindow3Stride2, SAME1x6x5x2x4) {
  using DataType = typename TestFixture::DataType;
  const std::vector<DataType> exp_out = {
      110.,   382.,   300.,   972.,   446.,   846.,   972.,   1900.,  782.,
      1310.,  350.,   1006.,  1548.,  2988.,  1454.,  2238.,  3756.,  5452.,
      2558.,  3470.,  1708.,  3404.,  5112.,  8760.,  3916.,  5868.,  9528.,
      13688., 6124.,  8332.,  3662.,  4702.,  8172.,  10380., 4766.,  5934.,
      10380., 12844., 5870.,  7166.,  8332.,  10796., 18360., 23544., 10540.,
      13260., 22776., 28472., 12748., 15724., 6974.,  8398.,  14796., 17772.,
      8078.,  9630.,  17004., 20236., 9182.,  10862.};
  const std::array<int, 4> in_shape = {{1, 6, 5, 2}};
  const int multiplier = 4;
  const auto padding = sycldnn::PaddingMode::SAME;
  const DataType max_input_val = 2048.0;
  this->run_input_backprop_test(exp_out, in_shape, multiplier, padding,
                                max_input_val);
}
TYPED_TEST(InputBackpropWindow3Stride2, VALID1x6x5x2x4) {
  using DataType = typename TestFixture::DataType;
  const std::vector<DataType> exp_out = {
      30.,   174.,  110.,  382.,  300.,   972.,   446.,  846.,  782.,  1310.,
      270.,  798.,  350.,  1006., 1548.,  2988.,  1454., 2238., 1790., 2702.,
      700.,  2012., 1372., 2940., 4440.,  7832.,  3580., 5404., 4764., 6844.,
      1966., 2750., 2558., 3470., 5964.,  7916.,  3662., 4702., 4510., 5678.,
      3742., 4910., 4334., 5630., 10284., 13004., 6206., 7630., 7054., 8606.,
      0.,    0.,    0.,    0.,    0.,     0.,     0.,    0.,    0.,    0.};
  const std::array<int, 4> in_shape = {{1, 6, 5, 2}};
  const int multiplier = 4;
  const auto padding = sycldnn::PaddingMode::VALID;
  const DataType max_input_val = 2048.0;
  this->run_input_backprop_test(exp_out, in_shape, multiplier, padding,
                                max_input_val);
}
TYPED_TEST(InputBackpropWindow3Stride2, SAME1x6x5x4x1) {
  using DataType = typename TestFixture::DataType;
  const std::vector<DataType> exp_out = {
      5.,   12.,  21.,   32.,   14.,   32.,   54.,   80.,   25.,  36.,
      49.,  64.,  54.,   80.,   110.,  144.,  45.,   60.,   77.,  96.,
      17.,  36.,  57.,   80.,   86.,   128.,  174.,  224.,  85.,  108.,
      133., 160., 222.,  272.,  326.,  384.,  153.,  180.,  209., 240.,
      94.,  144., 198.,  256.,  292.,  400.,  516.,  640.,  230., 288.,
      350., 416., 564.,  688.,  820.,  960.,  366.,  432.,  502., 576.,
      221., 252., 285.,  320.,  494.,  560.,  630.,  704.,  289., 324.,
      361., 400., 630.,  704.,  782.,  864.,  357.,  396.,  437., 480.,
      502., 576., 654.,  736.,  1108., 1264., 1428., 1600., 638., 720.,
      806., 896., 1380., 1552., 1732., 1920., 774.,  864.,  958., 1056.,
      425., 468., 513.,  560.,  902.,  992.,  1086., 1184., 493., 540.,
      589., 640., 1038., 1136., 1238., 1344., 561.,  612.,  665., 720.};
  const std::array<int, 4> in_shape = {{1, 6, 5, 4}};
  const int multiplier = 1;
  const auto padding = sycldnn::PaddingMode::SAME;
  const DataType max_input_val = 2048.0;
  this->run_input_backprop_test(exp_out, in_shape, multiplier, padding,
                                max_input_val);
}
TYPED_TEST(InputBackpropWindow3Stride2, VALID1x6x5x4x1) {
  using DataType = typename TestFixture::DataType;
  const std::vector<DataType> exp_out = {
      1.,   4.,   9.,   16.,  5.,   12.,  21.,  32.,  14.,  32.,  54.,  80.,
      25.,  36.,  49.,  64.,  45.,  60.,  77.,  96.,  13.,  28.,  45.,  64.,
      17.,  36.,  57.,  80.,  86.,  128., 174., 224., 85.,  108., 133., 160.,
      105., 132., 161., 192., 34.,  72.,  114., 160., 74.,  120., 170., 224.,
      252., 352., 460., 576., 210., 264., 322., 384., 282., 344., 410., 480.,
      117., 140., 165., 192., 153., 180., 209., 240., 358., 416., 478., 544.,
      221., 252., 285., 320., 273., 308., 345., 384., 225., 260., 297., 336.,
      261., 300., 341., 384., 622., 704., 790., 880., 377., 420., 465., 512.,
      429., 476., 525., 576., 0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,
      0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.};
  const std::array<int, 4> in_shape = {{1, 6, 5, 4}};
  const int multiplier = 1;
  const auto padding = sycldnn::PaddingMode::VALID;
  const DataType max_input_val = 2048.0;
  this->run_input_backprop_test(exp_out, in_shape, multiplier, padding,
                                max_input_val);
}
TYPED_TEST(InputBackpropWindow3Stride2, SAME1x6x5x4x2) {
  using DataType = typename TestFixture::DataType;
  const std::vector<DataType> exp_out = {
      29.,   81.,   149.,   233.,   82.,    218.,   386.,   586.,   181.,
      265.,  365.,  481.,   386.,   586.,   818.,   1082.,  333.,   449.,
      581.,  729.,  101.,   249.,   413.,   593.,   610.,   938.,   1298.,
      1690., 637.,  817.,   1013.,  1225.,  1682.,  2074.,  2498.,  2954.,
      1173., 1385., 1613.,  1857.,  658.,   1050.,  1474.,  1930.,  2132.,
      2980., 3892., 4868.,  1730.,  2186.,  2674.,  3194.,  4276.,  5252.,
      6292., 7396., 2802.,  3322.,  3874.,  4458.,  1709.,  1953.,  2213.,
      2489., 3826., 4346.,  4898.,  5482.,  2245.,  2521.,  2813.,  3121.,
      4898., 5482., 6098.,  6746.,  2781.,  3089.,  3413.,  3753.,  3874.,
      4458., 5074., 5722.,  8564.,  9796.,  11092., 12452., 4946.,  5594.,
      6274., 6986., 10708., 12068., 13492., 14980., 6018.,  6730.,  7474.,
      8250., 3317., 3657.,  4013.,  4385.,  7042.,  7754.,  8498.,  9274.,
      3853., 4225., 4613.,  5017.,  8114.,  8890.,  9698.,  10538., 4389.,
      4793., 5213., 5649.};
  const std::array<int, 4> in_shape = {{1, 6, 5, 4}};
  const int multiplier = 2;
  const auto padding = sycldnn::PaddingMode::SAME;
  const DataType max_input_val = 2048.0;
  this->run_input_backprop_test(exp_out, in_shape, multiplier, padding,
                                max_input_val);
}
TYPED_TEST(InputBackpropWindow3Stride2, VALID1x6x5x4x2) {
  using DataType = typename TestFixture::DataType;
  const std::vector<DataType> exp_out = {
      5.,    25.,   61.,   113.,  29.,   81.,   149.,  233.,  82.,   218.,
      386.,  586.,  181.,  265.,  365.,  481.,  333.,  449.,  581.,  729.,
      77.,   193.,  325.,  473.,  101.,  249.,  413.,  593.,  610.,  938.,
      1298., 1690., 637.,  817.,  1013., 1225., 789.,  1001., 1229., 1473.,
      202.,  498.,  826.,  1186., 506.,  866.,  1258., 1682., 1828., 2612.,
      3460., 4372., 1578., 2002., 2458., 2946., 2138., 2626., 3146., 3698.,
      893.,  1073., 1269., 1481., 1173., 1385., 1613., 1857., 2754., 3210.,
      3698., 4218., 1709., 1953., 2213., 2489., 2117., 2393., 2685., 2993.,
      1733., 2009., 2301., 2609., 2013., 2321., 2645., 2985., 4818., 5466.,
      6146., 6858., 2933., 3273., 3629., 4001., 3341., 3713., 4101., 4505.,
      0.,    0.,    0.,    0.,    0.,    0.,    0.,    0.,    0.,    0.,
      0.,    0.,    0.,    0.,    0.,    0.,    0.,    0.,    0.,    0.};
  const std::array<int, 4> in_shape = {{1, 6, 5, 4}};
  const int multiplier = 2;
  const auto padding = sycldnn::PaddingMode::VALID;
  const DataType max_input_val = 2048.0;
  this->run_input_backprop_test(exp_out, in_shape, multiplier, padding,
                                max_input_val);
}
TYPED_TEST(InputBackpropWindow3Stride2, SAME1x6x5x4x4) {
  using DataType = typename TestFixture::DataType;
  const std::vector<DataType> exp_out = {
      190.,   590.,   1118.,  1774.,  540.,    1596.,   2908.,  4476.,  1374.,
      2030.,  2814.,  3726.,  2908.,  4476.,   6300.,   8380.,  2558.,  3470.,
      4510.,  5678.,  670.,   1838.,  3134.,   4558.,   4572.,  7164.,  10012.,
      13116., 4926.,  6350.,  7902.,  9582.,   13084.,  16188., 19548., 23164.,
      9182.,  10862., 12670., 14606., 4892.,   7996.,   11356., 14972., 16248.,
      22968., 30200., 37944., 13404., 17020.,  20892.,  25020., 33272., 41016.,
      49272., 58040., 21916., 26044., 30428.,  35068.,  13438., 15374., 17438.,
      19630., 30108., 34236., 38620., 43260.,  17694.,  19886., 22206., 24654.,
      38620., 43260., 48156., 53308., 21950.,  24398.,  26974., 29678., 30428.,
      35068., 39964., 45116., 67320., 77112.,  87416.,  98232., 38940., 44092.,
      49500., 55164., 84344., 95160., 106488., 118328., 47452., 53116., 59036.,
      65212., 26206., 28910., 31742., 34702.,  55644.,  61308., 67228., 73404.,
      30462., 33422., 36510., 39726., 64156.,  70332.,  76764., 83452., 34718.,
      37934., 41278., 44750.};
  const std::array<int, 4> in_shape = {{1, 6, 5, 4}};
  const int multiplier = 4;
  const auto padding = sycldnn::PaddingMode::SAME;
  const DataType max_input_val = 2048.0;
  this->run_input_backprop_test(exp_out, in_shape, multiplier, padding,
                                max_input_val);
}
TYPED_TEST(InputBackpropWindow3Stride2, VALID1x6x5x4x4) {
  using DataType = typename TestFixture::DataType;
  const std::vector<DataType> exp_out = {
      30.,    174.,   446.,   846.,   190.,   590.,   1118.,  1774.,  540.,
      1596.,  2908.,  4476.,  1374.,  2030.,  2814.,  3726.,  2558.,  3470.,
      4510.,  5678.,  510.,   1422.,  2462.,  3630.,  670.,   1838.,  3134.,
      4558.,  4572.,  7164.,  10012., 13116., 4926.,  6350.,  7902.,  9582.,
      6110.,  7790.,  9598.,  11534., 1340.,  3676.,  6268.,  9116.,  3708.,
      6556.,  9660.,  13020., 13880., 20088., 26808., 34040., 12220., 15580.,
      19196., 23068., 16636., 20508., 24636., 29020., 6974.,  8398.,  9950.,
      11630., 9182.,  10862., 12670., 14606., 21596., 25212., 29084., 33212.,
      13438., 15374., 17438., 19630., 16670., 18862., 21182., 23630., 13598.,
      15790., 18110., 20558., 15806., 18254., 20830., 23534., 37916., 43068.,
      48476., 54140., 23134., 25838., 28670., 31630., 26366., 29326., 32414.,
      35630., 0.,     0.,     0.,     0.,     0.,     0.,     0.,     0.,
      0.,     0.,     0.,     0.,     0.,     0.,     0.,     0.,     0.,
      0.,     0.,     0.};
  const std::array<int, 4> in_shape = {{1, 6, 5, 4}};
  const int multiplier = 4;
  const auto padding = sycldnn::PaddingMode::VALID;
  const DataType max_input_val = 2048.0;
  this->run_input_backprop_test(exp_out, in_shape, multiplier, padding,
                                max_input_val);
}
TYPED_TEST(InputBackpropWindow3Stride2, SAME1x6x6x1x1) {
  using DataType = typename TestFixture::DataType;
  const std::vector<DataType> exp_out = {
      1.,  2.,  5.,   4.,  9.,   6.,  4.,  5.,  14., 10., 24., 15.,
      11., 16., 40.,  26., 60.,  36., 16., 20., 44., 25., 54., 30.,
      35., 46., 100., 56., 120., 66., 28., 35., 74., 40., 84., 45.};
  const std::array<int, 4> in_shape = {{1, 6, 6, 1}};
  const int multiplier = 1;
  const auto padding = sycldnn::PaddingMode::SAME;
  const DataType max_input_val = 2048.0;
  this->run_input_backprop_test(exp_out, in_shape, multiplier, padding,
                                max_input_val);
}
TYPED_TEST(InputBackpropWindow3Stride2, VALID1x6x6x1x1) {
  using DataType = typename TestFixture::DataType;
  const std::vector<DataType> exp_out = {
      1.,  2.,  5.,  4.,  6.,  0., 4.,  5.,  14., 10., 12., 0.,
      10., 14., 36., 24., 30., 0., 12., 15., 34., 20., 24., 0.,
      21., 24., 55., 32., 36., 0., 0.,  0.,  0.,  0.,  0.,  0.};
  const std::array<int, 4> in_shape = {{1, 6, 6, 1}};
  const int multiplier = 1;
  const auto padding = sycldnn::PaddingMode::VALID;
  const DataType max_input_val = 2048.0;
  this->run_input_backprop_test(exp_out, in_shape, multiplier, padding,
                                max_input_val);
}
TYPED_TEST(InputBackpropWindow3Stride2, SAME1x6x6x1x2) {
  using DataType = typename TestFixture::DataType;
  const std::vector<DataType> exp_out = {
      5.,   11.,  28.,  25.,  56.,  39.,  23.,  29.,  88.,  67.,  164., 105.,
      64.,  100., 260., 176., 412., 252., 113., 143., 316., 181., 392., 219.,
      244., 328., 716., 404., 868., 480., 203., 257., 544., 295., 620., 333.};
  const std::array<int, 4> in_shape = {{1, 6, 6, 1}};
  const int multiplier = 2;
  const auto padding = sycldnn::PaddingMode::SAME;
  const DataType max_input_val = 2048.0;
  this->run_input_backprop_test(exp_out, in_shape, multiplier, padding,
                                max_input_val);
}
TYPED_TEST(InputBackpropWindow3Stride2, VALID1x6x6x1x2) {
  using DataType = typename TestFixture::DataType;
  const std::vector<DataType> exp_out = {
      5.,   11.,  28.,  25.,  39.,  0., 23., 29.,  88.,  67.,  81.,  0.,
      58.,  86.,  232., 162., 206., 0., 83., 105., 240., 143., 173., 0.,
      149., 171., 396., 233., 263., 0., 0.,  0.,   0.,   0.,   0.,   0.};
  const std::array<int, 4> in_shape = {{1, 6, 6, 1}};
  const int multiplier = 2;
  const auto padding = sycldnn::PaddingMode::VALID;
  const DataType max_input_val = 2048.0;
  this->run_input_backprop_test(exp_out, in_shape, multiplier, padding,
                                max_input_val);
}
TYPED_TEST(InputBackpropWindow3Stride2, SAME1x6x6x1x4) {
  using DataType = typename TestFixture::DataType;
  const std::vector<DataType> exp_out = {
      30.,   70.,   180.,  174.,  388.,  278.,  150.,  190.,  612.,
      486.,  1204., 782.,  420.,  692.,  1848., 1284., 3032., 1876.,
      846.,  1078., 2388., 1374., 2980., 1670., 1812., 2468., 5400.,
      3060., 6584., 3652., 1542., 1966., 4164., 2262., 4756., 2558.};
  const std::array<int, 4> in_shape = {{1, 6, 6, 1}};
  const int multiplier = 4;
  const auto padding = sycldnn::PaddingMode::SAME;
  const DataType max_input_val = 2048.0;
  this->run_input_backprop_test(exp_out, in_shape, multiplier, padding,
                                max_input_val);
}
TYPED_TEST(InputBackpropWindow3Stride2, VALID1x6x6x1x4) {
  using DataType = typename TestFixture::DataType;
  const std::vector<DataType> exp_out = {
      30.,   70.,   180.,  174.,  278.,  0.,    150.,  190.,  612.,
      486.,  590.,  0.,    380.,  588.,  1640., 1180., 1516., 0.,
      614.,  782.,  1796., 1078., 1310., 0.,    1118., 1286., 2996.,
      1774., 2006., 0.,    0.,    0.,    0.,    0.,    0.,    0.};
  const std::array<int, 4> in_shape = {{1, 6, 6, 1}};
  const int multiplier = 4;
  const auto padding = sycldnn::PaddingMode::VALID;
  const DataType max_input_val = 2048.0;
  this->run_input_backprop_test(exp_out, in_shape, multiplier, padding,
                                max_input_val);
}
TYPED_TEST(InputBackpropWindow3Stride2, SAME1x6x6x2x1) {
  using DataType = typename TestFixture::DataType;
  const std::vector<DataType> exp_out = {
      1.,   4.,   3.,   8.,   8.,   20.,  9.,   16.,  20.,  36.,  15.,  24.,
      7.,   16.,  9.,   20.,  32.,  56.,  27.,  40.,  68.,  96.,  45.,  60.,
      20.,  44.,  36.,  64.,  100., 160., 72.,  104., 172., 240., 108., 144.,
      49.,  64.,  63.,  80.,  140., 176., 81.,  100., 176., 216., 99.,  120.,
      104., 140., 144., 184., 316., 400., 180., 224., 388., 480., 216., 264.,
      91.,  112., 117., 140., 248., 296., 135., 160., 284., 336., 153., 180.};
  const std::array<int, 4> in_shape = {{1, 6, 6, 2}};
  const int multiplier = 1;
  const auto padding = sycldnn::PaddingMode::SAME;
  const DataType max_input_val = 2048.0;
  this->run_input_backprop_test(exp_out, in_shape, multiplier, padding,
                                max_input_val);
}
TYPED_TEST(InputBackpropWindow3Stride2, VALID1x6x6x2x1) {
  using DataType = typename TestFixture::DataType;
  const std::vector<DataType> exp_out = {
      1.,  4.,  3.,  8.,  8.,   20.,  9.,   16.,  15.,  24.,  0., 0.,
      7.,  16., 9.,  20., 32.,  56.,  27.,  40.,  33.,  48.,  0., 0.,
      18., 40., 30., 56., 88.,  144., 66.,  96.,  86.,  120., 0., 0.,
      35., 48., 45., 60., 104., 136., 63.,  80.,  77.,  96.,  0., 0.,
      65., 84., 75., 96., 176., 220., 105., 128., 119., 144., 0., 0.,
      0.,  0.,  0.,  0.,  0.,   0.,   0.,   0.,   0.,   0.,   0., 0.};
  const std::array<int, 4> in_shape = {{1, 6, 6, 2}};
  const int multiplier = 1;
  const auto padding = sycldnn::PaddingMode::VALID;
  const DataType max_input_val = 2048.0;
  this->run_input_backprop_test(exp_out, in_shape, multiplier, padding,
                                max_input_val);
}
TYPED_TEST(InputBackpropWindow3Stride2, SAME1x6x6x2x2) {
  using DataType = typename TestFixture::DataType;
  const std::vector<DataType> exp_out = {
      5.,    25.,   17.,   53.,   46.,   134.,  61.,   113.,  134.,
      254.,  105.,  173.,  41.,   109.,  53.,   137.,  214.,  398.,
      193.,  293.,  494.,  710.,  333.,  449.,  118.,  302.,  238.,
      454.,  692.,  1156., 518.,  766.,  1252., 1780., 798.,  1078.,
      365.,  481.,  473.,  605.,  1054., 1334., 613.,  761.,  1334.,
      1646., 753.,  917.,  766.,  1046., 1078., 1390., 2372., 3028.,
      1358., 1702., 2932., 3652., 1638., 2014., 689.,  853.,  893.,
      1073., 1894., 2270., 1033., 1229., 2174., 2582., 1173., 1385.};
  const std::array<int, 4> in_shape = {{1, 6, 6, 2}};
  const int multiplier = 2;
  const auto padding = sycldnn::PaddingMode::SAME;
  const DataType max_input_val = 2048.0;
  this->run_input_backprop_test(exp_out, in_shape, multiplier, padding,
                                max_input_val);
}
TYPED_TEST(InputBackpropWindow3Stride2, VALID1x6x6x2x2) {
  using DataType = typename TestFixture::DataType;
  const std::vector<DataType> exp_out = {
      5.,   25.,  17.,  53.,  46.,   134.,  61.,  113., 105., 173.,  0., 0.,
      41.,  109., 53.,  137., 214.,  398.,  193., 293., 237., 353.,  0., 0.,
      106., 274., 194., 394., 604.,  1036., 474., 706., 626., 890.,  0., 0.,
      257., 357., 333., 449., 774.,  1022., 473., 605., 581., 729.,  0., 0.,
      485., 633., 561., 725., 1326., 1670., 797., 977., 905., 1101., 0., 0.,
      0.,   0.,   0.,   0.,   0.,    0.,    0.,   0.,   0.,   0.,    0., 0.};
  const std::array<int, 4> in_shape = {{1, 6, 6, 2}};
  const int multiplier = 2;
  const auto padding = sycldnn::PaddingMode::VALID;
  const DataType max_input_val = 2048.0;
  this->run_input_backprop_test(exp_out, in_shape, multiplier, padding,
                                max_input_val);
}
TYPED_TEST(InputBackpropWindow3Stride2, SAME1x6x6x2x4) {
  using DataType = typename TestFixture::DataType;
  const std::vector<DataType> exp_out = {
      30.,    174.,   110.,   382.,   300.,   972.,   446.,   846.,   972.,
      1900.,  782.,   1310.,  270.,   798.,   350.,   1006.,  1548.,  2988.,
      1454.,  2238.,  3756.,  5452.,  2558.,  3470.,  780.,   2220.,  1708.,
      3404.,  5112.,  8760.,  3916.,  5868.,  9528.,  13688., 6124.,  8332.,
      2814.,  3726.,  3662.,  4702.,  8172.,  10380., 4766.,  5934.,  10380.,
      12844., 5870.,  7166.,  5868.,  8076.,  8332.,  10796., 18360., 23544.,
      10540., 13260., 22776., 28472., 12748., 15724., 5358.,  6654.,  6974.,
      8398.,  14796., 17772., 8078.,  9630.,  17004., 20236., 9182.,  10862.};
  const std::array<int, 4> in_shape = {{1, 6, 6, 2}};
  const int multiplier = 4;
  const auto padding = sycldnn::PaddingMode::SAME;
  const DataType max_input_val = 2048.0;
  this->run_input_backprop_test(exp_out, in_shape, multiplier, padding,
                                max_input_val);
}
TYPED_TEST(InputBackpropWindow3Stride2, VALID1x6x6x2x4) {
  using DataType = typename TestFixture::DataType;
  const std::vector<DataType> exp_out = {
      30.,   174.,  110.,  382.,  300.,  972.,  446.,  846.,   782.,
      1310., 0.,    0.,    270.,  798.,  350.,  1006., 1548.,  2988.,
      1454., 2238., 1790., 2702., 0.,    0.,    700.,  2012.,  1372.,
      2940., 4440., 7832., 3580., 5404., 4764., 6844., 0.,     0.,
      1966., 2750., 2558., 3470., 5964., 7916., 3662., 4702.,  4510.,
      5678., 0.,    0.,    3742., 4910., 4334., 5630., 10284., 13004.,
      6206., 7630., 7054., 8606., 0.,    0.,    0.,    0.,     0.,
      0.,    0.,    0.,    0.,    0.,    0.,    0.,    0.,     0.};
  const std::array<int, 4> in_shape = {{1, 6, 6, 2}};
  const int multiplier = 4;
  const auto padding = sycldnn::PaddingMode::VALID;
  const DataType max_input_val = 2048.0;
  this->run_input_backprop_test(exp_out, in_shape, multiplier, padding,
                                max_input_val);
}
TYPED_TEST(InputBackpropWindow3Stride2, SAME1x6x6x4x1) {
  using DataType = typename TestFixture::DataType;
  const std::vector<DataType> exp_out = {
      1.,   4.,   9.,    16.,   5.,    12.,   21.,   32.,   14.,   32.,   54.,
      80.,  25.,  36.,   49.,   64.,   54.,   80.,   110.,  144.,  45.,   60.,
      77.,  96.,  13.,   28.,   45.,   64.,   17.,   36.,   57.,   80.,   86.,
      128., 174., 224.,  85.,   108.,  133.,  160.,  222.,  272.,  326.,  384.,
      153., 180., 209.,  240.,  38.,   80.,   126.,  176.,  94.,   144.,  198.,
      256., 292., 400.,  516.,  640.,  230.,  288.,  350.,  416.,  564.,  688.,
      820., 960., 366.,  432.,  502.,  576.,  169.,  196.,  225.,  256.,  221.,
      252., 285., 320.,  494.,  560.,  630.,  704.,  289.,  324.,  361.,  400.,
      630., 704., 782.,  864.,  357.,  396.,  437.,  480.,  350.,  416.,  486.,
      560., 502., 576.,  654.,  736.,  1108., 1264., 1428., 1600., 638.,  720.,
      806., 896., 1380., 1552., 1732., 1920., 774.,  864.,  958.,  1056., 325.,
      364., 405., 448.,  425.,  468.,  513.,  560.,  902.,  992.,  1086., 1184.,
      493., 540., 589.,  640.,  1038., 1136., 1238., 1344., 561.,  612.,  665.,
      720.};
  const std::array<int, 4> in_shape = {{1, 6, 6, 4}};
  const int multiplier = 1;
  const auto padding = sycldnn::PaddingMode::SAME;
  const DataType max_input_val = 2048.0;
  this->run_input_backprop_test(exp_out, in_shape, multiplier, padding,
                                max_input_val);
}
TYPED_TEST(InputBackpropWindow3Stride2, VALID1x6x6x4x1) {
  using DataType = typename TestFixture::DataType;
  const std::vector<DataType> exp_out = {
      1.,   4.,   9.,   16.,  5.,   12.,  21.,  32.,  14.,  32.,  54.,  80.,
      25.,  36.,  49.,  64.,  45.,  60.,  77.,  96.,  0.,   0.,   0.,   0.,
      13.,  28.,  45.,  64.,  17.,  36.,  57.,  80.,  86.,  128., 174., 224.,
      85.,  108., 133., 160., 105., 132., 161., 192., 0.,   0.,   0.,   0.,
      34.,  72.,  114., 160., 74.,  120., 170., 224., 252., 352., 460., 576.,
      210., 264., 322., 384., 282., 344., 410., 480., 0.,   0.,   0.,   0.,
      117., 140., 165., 192., 153., 180., 209., 240., 358., 416., 478., 544.,
      221., 252., 285., 320., 273., 308., 345., 384., 0.,   0.,   0.,   0.,
      225., 260., 297., 336., 261., 300., 341., 384., 622., 704., 790., 880.,
      377., 420., 465., 512., 429., 476., 525., 576., 0.,   0.,   0.,   0.,
      0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,
      0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.};
  const std::array<int, 4> in_shape = {{1, 6, 6, 4}};
  const int multiplier = 1;
  const auto padding = sycldnn::PaddingMode::VALID;
  const DataType max_input_val = 2048.0;
  this->run_input_backprop_test(exp_out, in_shape, multiplier, padding,
                                max_input_val);
}
TYPED_TEST(InputBackpropWindow3Stride2, SAME1x6x6x4x2) {
  using DataType = typename TestFixture::DataType;
  const std::vector<DataType> exp_out = {
      5.,    25.,   61.,   113.,  29.,    81.,    149.,   233.,   82.,
      218.,  386.,  586.,  181.,  265.,   365.,   481.,   386.,   586.,
      818.,  1082., 333.,  449.,  581.,   729.,   77.,    193.,   325.,
      473.,  101.,  249.,  413.,  593.,   610.,   938.,   1298.,  1690.,
      637.,  817.,  1013., 1225., 1682.,  2074.,  2498.,  2954.,  1173.,
      1385., 1613., 1857., 226.,  554.,   914.,   1306.,  658.,   1050.,
      1474., 1930., 2132., 2980., 3892.,  4868.,  1730.,  2186.,  2674.,
      3194., 4276., 5252., 6292., 7396.,  2802.,  3322.,  3874.,  4458.,
      1301., 1513., 1741., 1985., 1709.,  1953.,  2213.,  2489.,  3826.,
      4346., 4898., 5482., 2245., 2521.,  2813.,  3121.,  4898.,  5482.,
      6098., 6746., 2781., 3089., 3413.,  3753.,  2674.,  3194.,  3746.,
      4330., 3874., 4458., 5074., 5722.,  8564.,  9796.,  11092., 12452.,
      4946., 5594., 6274., 6986., 10708., 12068., 13492., 14980., 6018.,
      6730., 7474., 8250., 2525., 2833.,  3157.,  3497.,  3317.,  3657.,
      4013., 4385., 7042., 7754., 8498.,  9274.,  3853.,  4225.,  4613.,
      5017., 8114., 8890., 9698., 10538., 4389.,  4793.,  5213.,  5649.};
  const std::array<int, 4> in_shape = {{1, 6, 6, 4}};
  const int multiplier = 2;
  const auto padding = sycldnn::PaddingMode::SAME;
  const DataType max_input_val = 2048.0;
  this->run_input_backprop_test(exp_out, in_shape, multiplier, padding,
                                max_input_val);
}
TYPED_TEST(InputBackpropWindow3Stride2, VALID1x6x6x4x2) {
  using DataType = typename TestFixture::DataType;
  const std::vector<DataType> exp_out = {
      5.,    25.,   61.,   113.,  29.,   81.,   149.,  233.,  82.,   218.,
      386.,  586.,  181.,  265.,  365.,  481.,  333.,  449.,  581.,  729.,
      0.,    0.,    0.,    0.,    77.,   193.,  325.,  473.,  101.,  249.,
      413.,  593.,  610.,  938.,  1298., 1690., 637.,  817.,  1013., 1225.,
      789.,  1001., 1229., 1473., 0.,    0.,    0.,    0.,    202.,  498.,
      826.,  1186., 506.,  866.,  1258., 1682., 1828., 2612., 3460., 4372.,
      1578., 2002., 2458., 2946., 2138., 2626., 3146., 3698., 0.,    0.,
      0.,    0.,    893.,  1073., 1269., 1481., 1173., 1385., 1613., 1857.,
      2754., 3210., 3698., 4218., 1709., 1953., 2213., 2489., 2117., 2393.,
      2685., 2993., 0.,    0.,    0.,    0.,    1733., 2009., 2301., 2609.,
      2013., 2321., 2645., 2985., 4818., 5466., 6146., 6858., 2933., 3273.,
      3629., 4001., 3341., 3713., 4101., 4505., 0.,    0.,    0.,    0.,
      0.,    0.,    0.,    0.,    0.,    0.,    0.,    0.,    0.,    0.,
      0.,    0.,    0.,    0.,    0.,    0.,    0.,    0.,    0.,    0.,
      0.,    0.,    0.,    0.};
  const std::array<int, 4> in_shape = {{1, 6, 6, 4}};
  const int multiplier = 2;
  const auto padding = sycldnn::PaddingMode::VALID;
  const DataType max_input_val = 2048.0;
  this->run_input_backprop_test(exp_out, in_shape, multiplier, padding,
                                max_input_val);
}
TYPED_TEST(InputBackpropWindow3Stride2, SAME1x6x6x4x4) {
  using DataType = typename TestFixture::DataType;
  const std::vector<DataType> exp_out = {
      30.,    174.,   446.,   846.,   190.,   590.,   1118.,   1774.,   540.,
      1596.,  2908.,  4476.,  1374.,  2030.,  2814.,  3726.,   2908.,   4476.,
      6300.,  8380.,  2558.,  3470.,  4510.,  5678.,  510.,    1422.,   2462.,
      3630.,  670.,   1838.,  3134.,  4558.,  4572.,  7164.,   10012.,  13116.,
      4926.,  6350.,  7902.,  9582.,  13084., 16188., 19548.,  23164.,  9182.,
      10862., 12670., 14606., 1500.,  4092.,  6940.,  10044.,  4892.,   7996.,
      11356., 14972., 16248., 22968., 30200., 37944., 13404.,  17020.,  20892.,
      25020., 33272., 41016., 49272., 58040., 21916., 26044.,  30428.,  35068.,
      10206., 11886., 13694., 15630., 13438., 15374., 17438.,  19630.,  30108.,
      34236., 38620., 43260., 17694., 19886., 22206., 24654.,  38620.,  43260.,
      48156., 53308., 21950., 24398., 26974., 29678., 20892.,  25020.,  29404.,
      34044., 30428., 35068., 39964., 45116., 67320., 77112.,  87416.,  98232.,
      38940., 44092., 49500., 55164., 84344., 95160., 106488., 118328., 47452.,
      53116., 59036., 65212., 19902., 22350., 24926., 27630.,  26206.,  28910.,
      31742., 34702., 55644., 61308., 67228., 73404., 30462.,  33422.,  36510.,
      39726., 64156., 70332., 76764., 83452., 34718., 37934.,  41278.,  44750.};
  const std::array<int, 4> in_shape = {{1, 6, 6, 4}};
  const int multiplier = 4;
  const auto padding = sycldnn::PaddingMode::SAME;
  const DataType max_input_val = 2048.0;
  this->run_input_backprop_test(exp_out, in_shape, multiplier, padding,
                                max_input_val);
}
TYPED_TEST(InputBackpropWindow3Stride2, VALID1x6x6x4x4) {
  using DataType = typename TestFixture::DataType;
  const std::vector<DataType> exp_out = {
      30.,    174.,   446.,   846.,   190.,   590.,   1118.,  1774.,  540.,
      1596.,  2908.,  4476.,  1374.,  2030.,  2814.,  3726.,  2558.,  3470.,
      4510.,  5678.,  0.,     0.,     0.,     0.,     510.,   1422.,  2462.,
      3630.,  670.,   1838.,  3134.,  4558.,  4572.,  7164.,  10012., 13116.,
      4926.,  6350.,  7902.,  9582.,  6110.,  7790.,  9598.,  11534., 0.,
      0.,     0.,     0.,     1340.,  3676.,  6268.,  9116.,  3708.,  6556.,
      9660.,  13020., 13880., 20088., 26808., 34040., 12220., 15580., 19196.,
      23068., 16636., 20508., 24636., 29020., 0.,     0.,     0.,     0.,
      6974.,  8398.,  9950.,  11630., 9182.,  10862., 12670., 14606., 21596.,
      25212., 29084., 33212., 13438., 15374., 17438., 19630., 16670., 18862.,
      21182., 23630., 0.,     0.,     0.,     0.,     13598., 15790., 18110.,
      20558., 15806., 18254., 20830., 23534., 37916., 43068., 48476., 54140.,
      23134., 25838., 28670., 31630., 26366., 29326., 32414., 35630., 0.,
      0.,     0.,     0.,     0.,     0.,     0.,     0.,     0.,     0.,
      0.,     0.,     0.,     0.,     0.,     0.,     0.,     0.,     0.,
      0.,     0.,     0.,     0.,     0.,     0.,     0.,     0.,     0.};
  const std::array<int, 4> in_shape = {{1, 6, 6, 4}};
  const int multiplier = 4;
  const auto padding = sycldnn::PaddingMode::VALID;
  const DataType max_input_val = 2048.0;
  this->run_input_backprop_test(exp_out, in_shape, multiplier, padding,
                                max_input_val);
}
TYPED_TEST(InputBackpropWindow3Stride2, SAME1x6x8x1x1) {
  using DataType = typename TestFixture::DataType;
  const std::vector<DataType> exp_out = {
      1.,   2.,  5.,   4.,  9.,  6.,  13., 8.,  4.,   5.,  14.,  10.,
      24.,  15., 34.,  20., 12., 18., 44., 28., 64.,  38., 84.,  48.,
      20.,  25., 54.,  30., 64., 35., 74., 40., 44.,  58., 124., 68.,
      144., 78., 164., 88., 36., 45., 94., 50., 104., 55., 114., 60.};
  const std::array<int, 4> in_shape = {{1, 6, 8, 1}};
  const int multiplier = 1;
  const auto padding = sycldnn::PaddingMode::SAME;
  const DataType max_input_val = 2048.0;
  this->run_input_backprop_test(exp_out, in_shape, multiplier, padding,
                                max_input_val);
}
TYPED_TEST(InputBackpropWindow3Stride2, VALID1x6x8x1x1) {
  using DataType = typename TestFixture::DataType;
  const std::vector<DataType> exp_out = {
      1.,  2.,  5.,  4.,  9.,  6.,  9.,  0.,  4.,  5.,  14., 10.,
      24., 15., 18., 0.,  11., 16., 40., 26., 60., 36., 45., 0.,
      16., 20., 44., 25., 54., 30., 36., 0.,  28., 32., 71., 40.,
      87., 48., 54., 0.,  0.,  0.,  0.,  0.,  0.,  0.,  0.,  0.};
  const std::array<int, 4> in_shape = {{1, 6, 8, 1}};
  const int multiplier = 1;
  const auto padding = sycldnn::PaddingMode::VALID;
  const DataType max_input_val = 2048.0;
  this->run_input_backprop_test(exp_out, in_shape, multiplier, padding,
                                max_input_val);
}
TYPED_TEST(InputBackpropWindow3Stride2, SAME1x6x8x1x2) {
  using DataType = typename TestFixture::DataType;
  const std::vector<DataType> exp_out = {
      5.,    11.,  28.,   25.,  56.,  39.,  84.,  53.,  23.,  29.,  88.,  67.,
      164.,  105., 240.,  143., 70.,  114., 288., 190., 440., 266., 592., 342.,
      143.,  181., 392.,  219., 468., 257., 544., 295., 310., 418., 896., 494.,
      1048., 570., 1200., 646., 263., 333., 696., 371., 772., 409., 848., 447.};
  const std::array<int, 4> in_shape = {{1, 6, 8, 1}};
  const int multiplier = 2;
  const auto padding = sycldnn::PaddingMode::SAME;
  const DataType max_input_val = 2048.0;
  this->run_input_backprop_test(exp_out, in_shape, multiplier, padding,
                                max_input_val);
}
TYPED_TEST(InputBackpropWindow3Stride2, VALID1x6x8x1x2) {
  using DataType = typename TestFixture::DataType;
  const std::vector<DataType> exp_out = {
      5.,   11.,  28.,  25.,  56.,  39.,  61.,  0.,   23.,  29.,  88.,  67.,
      164., 105., 127., 0.,   64.,  100., 260., 176., 412., 252., 320., 0.,
      113., 143., 316., 181., 392., 219., 265., 0.,   203., 233., 520., 295.,
      644., 357., 403., 0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.};
  const std::array<int, 4> in_shape = {{1, 6, 8, 1}};
  const int multiplier = 2;
  const auto padding = sycldnn::PaddingMode::VALID;
  const DataType max_input_val = 2048.0;
  this->run_input_backprop_test(exp_out, in_shape, multiplier, padding,
                                max_input_val);
}
TYPED_TEST(InputBackpropWindow3Stride2, SAME1x6x8x1x4) {
  using DataType = typename TestFixture::DataType;
  const std::vector<DataType> exp_out = {
      30.,   70.,   180.,  174.,  388.,  278.,  596.,  382.,  150.,  190.,
      612.,  486.,  1204., 782.,  1796., 1078., 460.,  796.,  2056., 1388.,
      3240., 1980., 4424., 2572., 1078., 1374., 2980., 1670., 3572., 1966.,
      4164., 2262., 2316., 3164., 6792., 3756., 7976., 4348., 9160., 4940.,
      2006., 2558., 5348., 2854., 5940., 3150., 6532., 3446.};
  const std::array<int, 4> in_shape = {{1, 6, 8, 1}};
  const int multiplier = 4;
  const auto padding = sycldnn::PaddingMode::SAME;
  const DataType max_input_val = 2048.0;
  this->run_input_backprop_test(exp_out, in_shape, multiplier, padding,
                                max_input_val);
}
TYPED_TEST(InputBackpropWindow3Stride2, VALID1x6x8x1x4) {
  using DataType = typename TestFixture::DataType;
  const std::vector<DataType> exp_out = {
      30.,   70.,   180.,  174.,  388.,  278.,  446.,  0.,    150.,  190.,
      612.,  486.,  1204., 782.,  950.,  0.,    420.,  692.,  1848., 1284.,
      3032., 1876., 2404., 0.,    846.,  1078., 2388., 1374., 2980., 1670.,
      2030., 0.,    1542., 1774., 3972., 2262., 4948., 2750., 3110., 0.,
      0.,    0.,    0.,    0.,    0.,    0.,    0.,    0.};
  const std::array<int, 4> in_shape = {{1, 6, 8, 1}};
  const int multiplier = 4;
  const auto padding = sycldnn::PaddingMode::VALID;
  const DataType max_input_val = 2048.0;
  this->run_input_backprop_test(exp_out, in_shape, multiplier, padding,
                                max_input_val);
}
TYPED_TEST(InputBackpropWindow3Stride2, SAME1x6x8x2x1) {
  using DataType = typename TestFixture::DataType;
  const std::vector<DataType> exp_out = {
      1.,   4.,   3.,   8.,   8.,   20.,  9.,   16.,  20.,  36.,  15.,  24.,
      32.,  52.,  21.,  32.,  7.,   16.,  9.,   20.,  32.,  56.,  27.,  40.,
      68.,  96.,  45.,  60.,  104., 136., 63.,  80.,  22.,  48.,  42.,  72.,
      112., 176., 78.,  112., 184., 256., 114., 152., 256., 336., 150., 192.,
      63.,  80.,  81.,  100., 176., 216., 99.,  120., 212., 256., 117., 140.,
      248., 296., 135., 160., 134., 176., 186., 232., 400., 496., 222., 272.,
      472., 576., 258., 312., 544., 656., 294., 352., 119., 144., 153., 180.,
      320., 376., 171., 200., 356., 416., 189., 220., 392., 456., 207., 240.};
  const std::array<int, 4> in_shape = {{1, 6, 8, 2}};
  const int multiplier = 1;
  const auto padding = sycldnn::PaddingMode::SAME;
  const DataType max_input_val = 2048.0;
  this->run_input_backprop_test(exp_out, in_shape, multiplier, padding,
                                max_input_val);
}
TYPED_TEST(InputBackpropWindow3Stride2, VALID1x6x8x2x1) {
  using DataType = typename TestFixture::DataType;
  const std::vector<DataType> exp_out = {
      1.,   4.,   3.,   8.,   8.,   20.,  9.,   16.,  20.,  36.,  15.,  24.,
      25.,  36.,  0.,   0.,   7.,   16.,  9.,   20.,  32.,  56.,  27.,  40.,
      68.,  96.,  45.,  60.,  55.,  72.,  0.,   0.,   20.,  44.,  36.,  64.,
      100., 160., 72.,  104., 172., 240., 108., 144., 140., 180., 0.,   0.,
      49.,  64.,  63.,  80.,  140., 176., 81.,  100., 176., 216., 99.,  120.,
      121., 144., 0.,   0.,   91.,  112., 105., 128., 236., 284., 135., 160.,
      296., 348., 165., 192., 187., 216., 0.,   0.,   0.,   0.,   0.,   0.,
      0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.};
  const std::array<int, 4> in_shape = {{1, 6, 8, 2}};
  const int multiplier = 1;
  const auto padding = sycldnn::PaddingMode::VALID;
  const DataType max_input_val = 2048.0;
  this->run_input_backprop_test(exp_out, in_shape, multiplier, padding,
                                max_input_val);
}
TYPED_TEST(InputBackpropWindow3Stride2, SAME1x6x8x2x2) {
  using DataType = typename TestFixture::DataType;
  const std::vector<DataType> exp_out = {
      5.,    25.,   17.,   53.,   46.,   134.,  61.,   113.,  134.,  254.,
      105.,  173.,  222.,  374.,  149.,  233.,  41.,   109.,  53.,   137.,
      214.,  398.,  193.,  293.,  494.,  710.,  333.,  449.,  774.,  1022.,
      473.,  605.,  130.,  330.,  282.,  514.,  780.,  1276., 562.,  826.,
      1340., 1900., 842.,  1138., 1900., 2524., 1122., 1450., 473.,  605.,
      613.,  761.,  1334., 1646., 753.,  917.,  1614., 1958., 893.,  1073.,
      1894., 2270., 1033., 1229., 994.,  1322., 1402., 1762., 3020., 3772.,
      1682., 2074., 3580., 4396., 1962., 2386., 4140., 5020., 2242., 2698.,
      905.,  1101., 1173., 1385., 2454., 2894., 1313., 1541., 2734., 3206.,
      1453., 1697., 3014., 3518., 1593., 1853.};
  const std::array<int, 4> in_shape = {{1, 6, 8, 2}};
  const int multiplier = 2;
  const auto padding = sycldnn::PaddingMode::SAME;
  const DataType max_input_val = 2048.0;
  this->run_input_backprop_test(exp_out, in_shape, multiplier, padding,
                                max_input_val);
}
TYPED_TEST(InputBackpropWindow3Stride2, VALID1x6x8x2x2) {
  using DataType = typename TestFixture::DataType;
  const std::vector<DataType> exp_out = {
      5.,    25.,   17.,   53.,   46.,   134.,  61.,   113.,  134.,  254.,
      105.,  173.,  181.,  265.,  0.,    0.,    41.,   109.,  53.,   137.,
      214.,  398.,  193.,  293.,  494.,  710.,  333.,  449.,  409.,  541.,
      0.,    0.,    118.,  302.,  238.,  454.,  692.,  1156., 518.,  766.,
      1252., 1780., 798.,  1078., 1046., 1358., 0.,    0.,    365.,  481.,
      473.,  605.,  1054., 1334., 613.,  761.,  1334., 1646., 753.,  917.,
      925.,  1105., 0.,    0.,    689.,  853.,  797.,  977.,  1798., 2174.,
      1033., 1229., 2270., 2678., 1269., 1481., 1441., 1669., 0.,    0.,
      0.,    0.,    0.,    0.,    0.,    0.,    0.,    0.,    0.,    0.,
      0.,    0.,    0.,    0.,    0.,    0.};
  const std::array<int, 4> in_shape = {{1, 6, 8, 2}};
  const int multiplier = 2;
  const auto padding = sycldnn::PaddingMode::VALID;
  const DataType max_input_val = 2048.0;
  this->run_input_backprop_test(exp_out, in_shape, multiplier, padding,
                                max_input_val);
}
TYPED_TEST(InputBackpropWindow3Stride2, SAME1x6x8x2x4) {
  using DataType = typename TestFixture::DataType;
  const std::vector<DataType> exp_out = {
      30.,    174.,   110.,   382.,   300.,   972.,   446.,   846.,   972.,
      1900.,  782.,   1310.,  1644.,  2828.,  1118.,  1774.,  270.,   798.,
      350.,   1006.,  1548.,  2988.,  1454.,  2238.,  3756.,  5452.,  2558.,
      3470.,  5964.,  7916.,  3662.,  4702.,  860.,   2428.,  2044.,  3868.,
      5784.,  9688.,  4252.,  6332.,  10200., 14616., 6460.,  8796.,  14616.,
      19544., 8668.,  11260., 3662.,  4702.,  4766.,  5934.,  10380., 12844.,
      5870.,  7166.,  12588., 15308., 6974.,  8398.,  14796., 17772., 8078.,
      9630.,  7644.,  10236., 10876., 13724., 23448., 29400., 13084., 16188.,
      27864., 34328., 15292., 18652., 32280., 39256., 17500., 21116., 7054.,
      8606.,  9182.,  10862., 19212., 22700., 10286., 12094., 21420., 25164.,
      11390., 13326., 23628., 27628., 12494., 14558.};
  const std::array<int, 4> in_shape = {{1, 6, 8, 2}};
  const int multiplier = 4;
  const auto padding = sycldnn::PaddingMode::SAME;
  const DataType max_input_val = 2048.0;
  this->run_input_backprop_test(exp_out, in_shape, multiplier, padding,
                                max_input_val);
}
TYPED_TEST(InputBackpropWindow3Stride2, VALID1x6x8x2x4) {
  using DataType = typename TestFixture::DataType;
  const std::vector<DataType> exp_out = {
      30.,    174.,   110.,   382.,   300.,   972.,   446.,   846.,  972.,
      1900.,  782.,   1310.,  1374.,  2030.,  0.,     0.,     270.,  798.,
      350.,   1006.,  1548.,  2988.,  1454.,  2238.,  3756.,  5452., 2558.,
      3470.,  3150.,  4190.,  0.,     0.,     780.,   2220.,  1708., 3404.,
      5112.,  8760.,  3916.,  5868.,  9528.,  13688., 6124.,  8332., 8076.,
      10540., 0.,     0.,     2814.,  3726.,  3662.,  4702.,  8172., 10380.,
      4766.,  5934.,  10380., 12844., 5870.,  7166.,  7230.,  8654., 0.,
      0.,     5358.,  6654.,  6206.,  7630.,  14028., 17004., 8078., 9630.,
      17772., 21004., 9950.,  11630., 11310., 13118., 0.,     0.,    0.,
      0.,     0.,     0.,     0.,     0.,     0.,     0.,     0.,    0.,
      0.,     0.,     0.,     0.,     0.,     0.};
  const std::array<int, 4> in_shape = {{1, 6, 8, 2}};
  const int multiplier = 4;
  const auto padding = sycldnn::PaddingMode::VALID;
  const DataType max_input_val = 2048.0;
  this->run_input_backprop_test(exp_out, in_shape, multiplier, padding,
                                max_input_val);
}
TYPED_TEST(InputBackpropWindow3Stride2, SAME1x6x8x4x1) {
  using DataType = typename TestFixture::DataType;
  const std::vector<DataType> exp_out = {
      1.,    4.,    9.,    16.,   5.,    12.,   21.,   32.,   14.,   32.,
      54.,   80.,   25.,   36.,   49.,   64.,   54.,   80.,   110.,  144.,
      45.,   60.,   77.,   96.,   94.,   128.,  166.,  208.,  65.,   84.,
      105.,  128.,  13.,   28.,   45.,   64.,   17.,   36.,   57.,   80.,
      86.,   128.,  174.,  224.,  85.,   108.,  133.,  160.,  222.,  272.,
      326.,  384.,  153.,  180.,  209.,  240.,  358.,  416.,  478.,  544.,
      221.,  252.,  285.,  320.,  42.,   88.,   138.,  192.,  114.,  168.,
      226.,  288.,  332.,  448.,  572.,  704.,  250.,  312.,  378.,  448.,
      604.,  736.,  876.,  1024., 386.,  456.,  530.,  608.,  876.,  1024.,
      1180., 1344., 522.,  600.,  682.,  768.,  221.,  252.,  285.,  320.,
      289.,  324.,  361.,  400.,  630.,  704.,  782.,  864.,  357.,  396.,
      437.,  480.,  766.,  848.,  934.,  1024., 425.,  468.,  513.,  560.,
      902.,  992.,  1086., 1184., 493.,  540.,  589.,  640.,  458.,  536.,
      618.,  704.,  658.,  744.,  834.,  928.,  1420., 1600., 1788., 1984.,
      794.,  888.,  986.,  1088., 1692., 1888., 2092., 2304., 930.,  1032.,
      1138., 1248., 1964., 2176., 2396., 2624., 1066., 1176., 1290., 1408.,
      429.,  476.,  525.,  576.,  561.,  612.,  665.,  720.,  1174., 1280.,
      1390., 1504., 629.,  684.,  741.,  800.,  1310., 1424., 1542., 1664.,
      697.,  756.,  817.,  880.,  1446., 1568., 1694., 1824., 765.,  828.,
      893.,  960.};
  const std::array<int, 4> in_shape = {{1, 6, 8, 4}};
  const int multiplier = 1;
  const auto padding = sycldnn::PaddingMode::SAME;
  const DataType max_input_val = 2048.0;
  this->run_input_backprop_test(exp_out, in_shape, multiplier, padding,
                                max_input_val);
}
TYPED_TEST(InputBackpropWindow3Stride2, VALID1x6x8x4x1) {
  using DataType = typename TestFixture::DataType;
  const std::vector<DataType> exp_out = {
      1.,   4.,    9.,    16.,   5.,    12.,  21.,   32.,   14.,  32.,  54.,
      80.,  25.,   36.,   49.,   64.,   54.,  80.,   110.,  144., 45.,  60.,
      77.,  96.,   81.,   100.,  121.,  144., 0.,    0.,    0.,   0.,   13.,
      28.,  45.,   64.,   17.,   36.,   57.,  80.,   86.,   128., 174., 224.,
      85.,  108.,  133.,  160.,  222.,  272., 326.,  384.,  153., 180., 209.,
      240., 189.,  220.,  253.,  288.,  0.,   0.,    0.,    0.,   38.,  80.,
      126., 176.,  94.,   144.,  198.,  256., 292.,  400.,  516., 640., 230.,
      288., 350.,  416.,  564.,  688.,  820., 960.,  366.,  432., 502., 576.,
      486., 560.,  638.,  720.,  0.,    0.,   0.,    0.,    169., 196., 225.,
      256., 221.,  252.,  285.,  320.,  494., 560.,  630.,  704., 289., 324.,
      361., 400.,  630.,  704.,  782.,  864., 357.,  396.,  437., 480., 441.,
      484., 529.,  576.,  0.,    0.,    0.,   0.,    325.,  364., 405., 448.,
      377., 420.,  465.,  512.,  854.,  944., 1038., 1136., 493., 540., 589.,
      640., 1086., 1184., 1286., 1392., 609., 660.,  713.,  768., 693., 748.,
      805., 864.,  0.,    0.,    0.,    0.,   0.,    0.,    0.,   0.,   0.,
      0.,   0.,    0.,    0.,    0.,    0.,   0.,    0.,    0.,   0.,   0.,
      0.,   0.,    0.,    0.,    0.,    0.,   0.,    0.,    0.,   0.,   0.,
      0.,   0.,    0.,    0.,    0.};
  const std::array<int, 4> in_shape = {{1, 6, 8, 4}};
  const int multiplier = 1;
  const auto padding = sycldnn::PaddingMode::VALID;
  const DataType max_input_val = 2048.0;
  this->run_input_backprop_test(exp_out, in_shape, multiplier, padding,
                                max_input_val);
}
TYPED_TEST(InputBackpropWindow3Stride2, SAME1x6x8x4x2) {
  using DataType = typename TestFixture::DataType;
  const std::vector<DataType> exp_out = {
      5.,     25.,    61.,    113.,   29.,    81.,    149.,   233.,   82.,
      218.,   386.,   586.,   181.,   265.,   365.,   481.,   386.,   586.,
      818.,   1082.,  333.,   449.,   581.,   729.,   690.,   954.,   1250.,
      1578.,  485.,   633.,   797.,   977.,   77.,    193.,   325.,   473.,
      101.,   249.,   413.,   593.,   610.,   938.,   1298.,  1690.,  637.,
      817.,   1013.,  1225.,  1682.,  2074.,  2498.,  2954.,  1173.,  1385.,
      1613.,  1857.,  2754.,  3210.,  3698.,  4218.,  1709.,  1953.,  2213.,
      2489.,  250.,   610.,   1002.,  1426.,  810.,   1234.,  1690.,  2178.,
      2436.,  3348.,  4324.,  5364.,  1882.,  2370.,  2890.,  3442.,  4580.,
      5620.,  6724.,  7892.,  2954.,  3506.,  4090.,  4706.,  6724.,  7892.,
      9124.,  10420., 4026.,  4642.,  5290.,  5970.,  1709.,  1953.,  2213.,
      2489.,  2245.,  2521.,  2813.,  3121.,  4898.,  5482.,  6098.,  6746.,
      2781.,  3089.,  3413.,  3753.,  5970.,  6618.,  7298.,  8010.,  3317.,
      3657.,  4013.,  4385.,  7042.,  7754.,  8498.,  9274.,  3853.,  4225.,
      4613.,  5017.,  3514.,  4130.,  4778.,  5458.,  5098.,  5778.,  6490.,
      7234.,  11012., 12436., 13924., 15476., 6170.,  6914.,  7690.,  8498.,
      13156., 14708., 16324., 18004., 7242.,  8050.,  8890.,  9762.,  15300.,
      16980., 18724., 20532., 8314.,  9186.,  10090., 11026., 3341.,  3713.,
      4101.,  4505.,  4389.,  4793.,  5213.,  5649.,  9186.,  10026., 10898.,
      11802., 4925.,  5361.,  5813.,  6281.,  10258., 11162., 12098., 13066.,
      5461.,  5929.,  6413.,  6913.,  11330., 12298., 13298., 14330., 5997.,
      6497.,  7013.,  7545.};
  const std::array<int, 4> in_shape = {{1, 6, 8, 4}};
  const int multiplier = 2;
  const auto padding = sycldnn::PaddingMode::SAME;
  const DataType max_input_val = 2048.0;
  this->run_input_backprop_test(exp_out, in_shape, multiplier, padding,
                                max_input_val);
}
TYPED_TEST(InputBackpropWindow3Stride2, VALID1x6x8x4x2) {
  using DataType = typename TestFixture::DataType;
  const std::vector<DataType> exp_out = {
      5.,    25.,   61.,   113.,  29.,   81.,   149.,   233.,   82.,   218.,
      386.,  586.,  181.,  265.,  365.,  481.,  386.,   586.,   818.,  1082.,
      333.,  449.,  581.,  729.,  613.,  761.,  925.,   1105.,  0.,    0.,
      0.,    0.,    77.,   193.,  325.,  473.,  101.,   249.,   413.,  593.,
      610.,  938.,  1298., 1690., 637.,  817.,  1013.,  1225.,  1682., 2074.,
      2498., 2954., 1173., 1385., 1613., 1857., 1453.,  1697.,  1957., 2233.,
      0.,    0.,    0.,    0.,    226.,  554.,  914.,   1306.,  658.,  1050.,
      1474., 1930., 2132., 2980., 3892., 4868., 1730.,  2186.,  2674., 3194.,
      4276., 5252., 6292., 7396., 2802., 3322., 3874.,  4458.,  3746., 4330.,
      4946., 5594., 0.,    0.,    0.,    0.,    1301.,  1513.,  1741., 1985.,
      1709., 1953., 2213., 2489., 3826., 4346., 4898.,  5482.,  2245., 2521.,
      2813., 3121., 4898., 5482., 6098., 6746., 2781.,  3089.,  3413., 3753.,
      3445., 3785., 4141., 4513., 0.,    0.,    0.,     0.,     2525., 2833.,
      3157., 3497., 2933., 3273., 3629., 4001., 6658.,  7370.,  8114., 8890.,
      3853., 4225., 4613., 5017., 8498., 9274., 10082., 10922., 4773., 5177.,
      5597., 6033., 5437., 5873., 6325., 6793., 0.,     0.,     0.,    0.,
      0.,    0.,    0.,    0.,    0.,    0.,    0.,     0.,     0.,    0.,
      0.,    0.,    0.,    0.,    0.,    0.,    0.,     0.,     0.,    0.,
      0.,    0.,    0.,    0.,    0.,    0.,    0.,     0.,     0.,    0.,
      0.,    0.};
  const std::array<int, 4> in_shape = {{1, 6, 8, 4}};
  const int multiplier = 2;
  const auto padding = sycldnn::PaddingMode::VALID;
  const DataType max_input_val = 2048.0;
  this->run_input_backprop_test(exp_out, in_shape, multiplier, padding,
                                max_input_val);
}
TYPED_TEST(InputBackpropWindow3Stride2, SAME1x6x8x4x4) {
  using DataType = typename TestFixture::DataType;
  const std::vector<DataType> exp_out = {
      30.,     174.,    446.,    846.,    190.,   590.,   1118.,  1774.,
      540.,    1596.,   2908.,   4476.,   1374.,  2030.,  2814.,  3726.,
      2908.,   4476.,   6300.,   8380.,   2558.,  3470.,  4510.,  5678.,
      5276.,   7356.,   9692.,   12284.,  3742.,  4910.,  6206.,  7630.,
      510.,    1422.,   2462.,   3630.,   670.,   1838.,  3134.,  4558.,
      4572.,   7164.,   10012.,  13116.,  4926.,  6350.,  7902.,  9582.,
      13084.,  16188.,  19548.,  23164.,  9182.,  10862., 12670., 14606.,
      21596.,  25212.,  29084.,  33212.,  13438., 15374., 17438., 19630.,
      1660.,   4508.,   7612.,   10972.,  6076.,  9436.,  13052., 16924.,
      18616.,  25848.,  33592.,  41848.,  14588., 18460., 22588., 26972.,
      35640.,  43896.,  52664.,  61944.,  23100., 27484., 32124., 37020.,
      52664.,  61944.,  71736.,  82040.,  31612., 36508., 41660., 47068.,
      13438.,  15374.,  17438.,  19630.,  17694., 19886., 22206., 24654.,
      38620.,  43260.,  48156.,  53308.,  21950., 24398., 26974., 29678.,
      47132.,  52284.,  57692.,  63356.,  26206., 28910., 31742., 34702.,
      55644.,  61308.,  67228.,  73404.,  30462., 33422., 36510., 39726.,
      27516.,  32412.,  37564.,  42972.,  40124., 45532., 51196., 57116.,
      86712.,  98040.,  109880., 122232., 48636., 54556., 60732., 67164.,
      103736., 116088., 128952., 142328., 57148., 63580., 70268., 77212.,
      120760., 134136., 148024., 162424., 65660., 72604., 79804., 87260.,
      26366.,  29326.,  32414.,  35630.,  34718., 37934., 41278., 44750.,
      72668.,  79356.,  86300.,  93500.,  38974., 42446., 46046., 49774.,
      81180.,  88380.,  95836.,  103548., 43230., 46958., 50814., 54798.,
      89692.,  97404.,  105372., 113596., 47486., 51470., 55582., 59822.};
  const std::array<int, 4> in_shape = {{1, 6, 8, 4}};
  const int multiplier = 4;
  const auto padding = sycldnn::PaddingMode::SAME;
  const DataType max_input_val = 2048.0;
  this->run_input_backprop_test(exp_out, in_shape, multiplier, padding,
                                max_input_val);
}
TYPED_TEST(InputBackpropWindow3Stride2, VALID1x6x8x4x4) {
  using DataType = typename TestFixture::DataType;
  const std::vector<DataType> exp_out = {
      30.,    174.,   446.,   846.,   190.,   590.,   1118.,  1774.,  540.,
      1596.,  2908.,  4476.,  1374.,  2030.,  2814.,  3726.,  2908.,  4476.,
      6300.,  8380.,  2558.,  3470.,  4510.,  5678.,  4766.,  5934.,  7230.,
      8654.,  0.,     0.,     0.,     0.,     510.,   1422.,  2462.,  3630.,
      670.,   1838.,  3134.,  4558.,  4572.,  7164.,  10012., 13116., 4926.,
      6350.,  7902.,  9582.,  13084., 16188., 19548., 23164., 9182.,  10862.,
      12670., 14606., 11390., 13326., 15390., 17582., 0.,     0.,     0.,
      0.,     1500.,  4092.,  6940.,  10044., 4892.,  7996.,  11356., 14972.,
      16248., 22968., 30200., 37944., 13404., 17020., 20892., 25020., 33272.,
      41016., 49272., 58040., 21916., 26044., 30428., 35068., 29404., 34044.,
      38940., 44092., 0.,     0.,     0.,     0.,     10206., 11886., 13694.,
      15630., 13438., 15374., 17438., 19630., 30108., 34236., 38620., 43260.,
      17694., 19886., 22206., 24654., 38620., 43260., 48156., 53308., 21950.,
      24398., 26974., 29678., 27230., 29934., 32766., 35726., 0.,     0.,
      0.,     0.,     19902., 22350., 24926., 27630., 23134., 25838., 28670.,
      31630., 52572., 58236., 64156., 70332., 30462., 33422., 36510., 39726.,
      67228., 73404., 79836., 86524., 37790., 41006., 44350., 47822., 43070.,
      46542., 50142., 53870., 0.,     0.,     0.,     0.,     0.,     0.,
      0.,     0.,     0.,     0.,     0.,     0.,     0.,     0.,     0.,
      0.,     0.,     0.,     0.,     0.,     0.,     0.,     0.,     0.,
      0.,     0.,     0.,     0.,     0.,     0.,     0.,     0.,     0.,
      0.,     0.,     0.};
  const std::array<int, 4> in_shape = {{1, 6, 8, 4}};
  const int multiplier = 4;
  const auto padding = sycldnn::PaddingMode::VALID;
  const DataType max_input_val = 2048.0;
  this->run_input_backprop_test(exp_out, in_shape, multiplier, padding,
                                max_input_val);
}
TYPED_TEST(InputBackpropWindow3Stride2, SAME1x8x5x1x1) {
  using DataType = typename TestFixture::DataType;
  const std::vector<DataType> exp_out = {
      2.,  5.,   4.,  9.,   6.,  5.,  14.,  10., 24.,  15.,
      16., 40.,  26., 60.,  36., 20., 44.,  25., 54.,  30.,
      46., 100., 56., 120., 66., 35., 74.,  40., 84.,  45.,
      76., 160., 86., 180., 96., 50., 104., 55., 114., 60.};
  const std::array<int, 4> in_shape = {{1, 8, 5, 1}};
  const int multiplier = 1;
  const auto padding = sycldnn::PaddingMode::SAME;
  const DataType max_input_val = 2048.0;
  this->run_input_backprop_test(exp_out, in_shape, multiplier, padding,
                                max_input_val);
}
TYPED_TEST(InputBackpropWindow3Stride2, VALID1x8x5x1x1) {
  using DataType = typename TestFixture::DataType;
  const std::vector<DataType> exp_out = {
      1.,  2.,  5.,  4.,  6.,  4.,  5.,  14., 10., 12., 10., 14., 36., 24.,
      30., 12., 15., 34., 20., 24., 26., 34., 76., 44., 54., 20., 25., 54.,
      30., 36., 35., 40., 87., 48., 54., 0.,  0.,  0.,  0.,  0.};
  const std::array<int, 4> in_shape = {{1, 8, 5, 1}};
  const int multiplier = 1;
  const auto padding = sycldnn::PaddingMode::VALID;
  const DataType max_input_val = 2048.0;
  this->run_input_backprop_test(exp_out, in_shape, multiplier, padding,
                                max_input_val);
}
TYPED_TEST(InputBackpropWindow3Stride2, SAME1x8x5x1x2) {
  using DataType = typename TestFixture::DataType;
  const std::vector<DataType> exp_out = {
      11.,  28.,   25.,  56.,   39.,  29.,  88.,  67.,  164., 105.,
      100., 260.,  176., 412.,  252., 143., 316., 181., 392., 219.,
      328., 716.,  404., 868.,  480., 257., 544., 295., 620., 333.,
      556., 1172., 632., 1324., 708., 371., 772., 409., 848., 447.};
  const std::array<int, 4> in_shape = {{1, 8, 5, 1}};
  const int multiplier = 2;
  const auto padding = sycldnn::PaddingMode::SAME;
  const DataType max_input_val = 2048.0;
  this->run_input_backprop_test(exp_out, in_shape, multiplier, padding,
                                max_input_val);
}
TYPED_TEST(InputBackpropWindow3Stride2, VALID1x8x5x1x2) {
  using DataType = typename TestFixture::DataType;
  const std::vector<DataType> exp_out = {
      5.,   11.,  28.,  25.,  39.,  23.,  29.,  88.,  67.,  81.,
      58.,  86.,  232., 162., 206., 83.,  105., 240., 143., 173.,
      178., 238., 536., 314., 390., 143., 181., 392., 219., 265.,
      257., 295., 644., 357., 403., 0.,   0.,   0.,   0.,   0.};
  const std::array<int, 4> in_shape = {{1, 8, 5, 1}};
  const int multiplier = 2;
  const auto padding = sycldnn::PaddingMode::VALID;
  const DataType max_input_val = 2048.0;
  this->run_input_backprop_test(exp_out, in_shape, multiplier, padding,
                                max_input_val);
}
TYPED_TEST(InputBackpropWindow3Stride2, SAME1x8x5x1x4) {
  using DataType = typename TestFixture::DataType;
  const std::vector<DataType> exp_out = {
      70.,   180.,  174.,  388.,   278.,  190.,  612.,  486.,  1204., 782.,
      692.,  1848., 1284., 3032.,  1876., 1078., 2388., 1374., 2980., 1670.,
      2468., 5400., 3060., 6584.,  3652., 1966., 4164., 2262., 4756., 2558.,
      4244., 8952., 4836., 10136., 5428., 2854., 5940., 3150., 6532., 3446.};
  const std::array<int, 4> in_shape = {{1, 8, 5, 1}};
  const int multiplier = 4;
  const auto padding = sycldnn::PaddingMode::SAME;
  const DataType max_input_val = 2048.0;
  this->run_input_backprop_test(exp_out, in_shape, multiplier, padding,
                                max_input_val);
}
TYPED_TEST(InputBackpropWindow3Stride2, VALID1x8x5x1x4) {
  using DataType = typename TestFixture::DataType;
  const std::vector<DataType> exp_out = {
      30.,   70.,   180.,  174.,  278.,  150.,  190.,  612.,  486.,  590.,
      380.,  588.,  1640., 1180., 1516., 614.,  782.,  1796., 1078., 1310.,
      1308., 1772., 4008., 2364., 2956., 1078., 1374., 2980., 1670., 2030.,
      1966., 2262., 4948., 2750., 3110., 0.,    0.,    0.,    0.,    0.};
  const std::array<int, 4> in_shape = {{1, 8, 5, 1}};
  const int multiplier = 4;
  const auto padding = sycldnn::PaddingMode::VALID;
  const DataType max_input_val = 2048.0;
  this->run_input_backprop_test(exp_out, in_shape, multiplier, padding,
                                max_input_val);
}
TYPED_TEST(InputBackpropWindow3Stride2, SAME1x8x5x2x1) {
  using DataType = typename TestFixture::DataType;
  const std::vector<DataType> exp_out = {
      3.,   8.,   8.,   20.,  9.,   16.,  20.,  36.,  15.,  24.,  9.,   20.,
      32.,  56.,  27.,  40.,  68.,  96.,  45.,  60.,  36.,  64.,  100., 160.,
      72.,  104., 172., 240., 108., 144., 63.,  80.,  140., 176., 81.,  100.,
      176., 216., 99.,  120., 144., 184., 316., 400., 180., 224., 388., 480.,
      216., 264., 117., 140., 248., 296., 135., 160., 284., 336., 153., 180.,
      252., 304., 532., 640., 288., 344., 604., 720., 324., 384., 171., 200.,
      356., 416., 189., 220., 392., 456., 207., 240.};
  const std::array<int, 4> in_shape = {{1, 8, 5, 2}};
  const int multiplier = 1;
  const auto padding = sycldnn::PaddingMode::SAME;
  const DataType max_input_val = 2048.0;
  this->run_input_backprop_test(exp_out, in_shape, multiplier, padding,
                                max_input_val);
}
TYPED_TEST(InputBackpropWindow3Stride2, VALID1x8x5x2x1) {
  using DataType = typename TestFixture::DataType;
  const std::vector<DataType> exp_out = {
      1.,   4.,   3.,   8.,   8.,   20.,  9.,   16.,  15.,  24.,  7.,   16.,
      9.,   20.,  32.,  56.,  27.,  40.,  33.,  48.,  18.,  40.,  30.,  56.,
      88.,  144., 66.,  96.,  86.,  120., 35.,  48.,  45.,  60.,  104., 136.,
      63.,  80.,  77.,  96.,  74.,  104., 102., 136., 232., 304., 138., 176.,
      174., 216., 63.,  80.,  81.,  100., 176., 216., 99.,  120., 121., 144.,
      117., 140., 135., 160., 296., 348., 165., 192., 187., 216., 0.,   0.,
      0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.};
  const std::array<int, 4> in_shape = {{1, 8, 5, 2}};
  const int multiplier = 1;
  const auto padding = sycldnn::PaddingMode::VALID;
  const DataType max_input_val = 2048.0;
  this->run_input_backprop_test(exp_out, in_shape, multiplier, padding,
                                max_input_val);
}
TYPED_TEST(InputBackpropWindow3Stride2, SAME1x8x5x2x2) {
  using DataType = typename TestFixture::DataType;
  const std::vector<DataType> exp_out = {
      17.,   53.,   46.,   134.,  61.,   113.,  134.,  254.,  105.,  173.,
      53.,   137.,  214.,  398.,  193.,  293.,  494.,  710.,  333.,  449.,
      238.,  454.,  692.,  1156., 518.,  766.,  1252., 1780., 798.,  1078.,
      473.,  605.,  1054., 1334., 613.,  761.,  1334., 1646., 753.,  917.,
      1078., 1390., 2372., 3028., 1358., 1702., 2932., 3652., 1638., 2014.,
      893.,  1073., 1894., 2270., 1033., 1229., 2174., 2582., 1173., 1385.,
      1918., 2326., 4052., 4900., 2198., 2638., 4612., 5524., 2478., 2950.,
      1313., 1541., 2734., 3206., 1453., 1697., 3014., 3518., 1593., 1853.};
  const std::array<int, 4> in_shape = {{1, 8, 5, 2}};
  const int multiplier = 2;
  const auto padding = sycldnn::PaddingMode::SAME;
  const DataType max_input_val = 2048.0;
  this->run_input_backprop_test(exp_out, in_shape, multiplier, padding,
                                max_input_val);
}
TYPED_TEST(InputBackpropWindow3Stride2, VALID1x8x5x2x2) {
  using DataType = typename TestFixture::DataType;
  const std::vector<DataType> exp_out = {
      5.,   25.,   17.,   53.,   46.,   134.,  61.,   113.,  105.,  173.,
      41.,  109.,  53.,   137.,  214.,  398.,  193.,  293.,  237.,  353.,
      106., 274.,  194.,  394.,  604.,  1036., 474.,  706.,  626.,  890.,
      257., 357.,  333.,  449.,  774.,  1022., 473.,  605.,  581.,  729.,
      538., 770.,  754.,  1018., 1724., 2284., 1034., 1330., 1314., 1642.,
      473., 605.,  613.,  761.,  1334., 1646., 753.,  917.,  925.,  1105.,
      893., 1073., 1033., 1229., 2270., 2678., 1269., 1481., 1441., 1669.,
      0.,   0.,    0.,    0.,    0.,    0.,    0.,    0.,    0.,    0.};
  const std::array<int, 4> in_shape = {{1, 8, 5, 2}};
  const int multiplier = 2;
  const auto padding = sycldnn::PaddingMode::VALID;
  const DataType max_input_val = 2048.0;
  this->run_input_backprop_test(exp_out, in_shape, multiplier, padding,
                                max_input_val);
}
TYPED_TEST(InputBackpropWindow3Stride2, SAME1x8x5x2x4) {
  using DataType = typename TestFixture::DataType;
  const std::vector<DataType> exp_out = {
      110.,   382.,   300.,   972.,   446.,   846.,   972.,   1900.,  782.,
      1310.,  350.,   1006.,  1548.,  2988.,  1454.,  2238.,  3756.,  5452.,
      2558.,  3470.,  1708.,  3404.,  5112.,  8760.,  3916.,  5868.,  9528.,
      13688., 6124.,  8332.,  3662.,  4702.,  8172.,  10380., 4766.,  5934.,
      10380., 12844., 5870.,  7166.,  8332.,  10796., 18360., 23544., 10540.,
      13260., 22776., 28472., 12748., 15724., 6974.,  8398.,  14796., 17772.,
      8078.,  9630.,  17004., 20236., 9182.,  10862., 14956., 18188., 31608.,
      38328., 17164., 20652., 36024., 43256., 19372., 23116., 10286., 12094.,
      21420., 25164., 11390., 13326., 23628., 27628., 12494., 14558.};
  const std::array<int, 4> in_shape = {{1, 8, 5, 2}};
  const int multiplier = 4;
  const auto padding = sycldnn::PaddingMode::SAME;
  const DataType max_input_val = 2048.0;
  this->run_input_backprop_test(exp_out, in_shape, multiplier, padding,
                                max_input_val);
}
TYPED_TEST(InputBackpropWindow3Stride2, VALID1x8x5x2x4) {
  using DataType = typename TestFixture::DataType;
  const std::vector<DataType> exp_out = {
      30.,   174.,  110.,  382.,  300.,   972.,   446.,  846.,   782.,   1310.,
      270.,  798.,  350.,  1006., 1548.,  2988.,  1454., 2238.,  1790.,  2702.,
      700.,  2012., 1372., 2940., 4440.,  7832.,  3580., 5404.,  4764.,  6844.,
      1966., 2750., 2558., 3470., 5964.,  7916.,  3662., 4702.,  4510.,  5678.,
      4092., 5916., 5788., 7868., 13272., 17688., 7996., 10332., 10204., 12796.,
      3662., 4702., 4766., 5934., 10380., 12844., 5870., 7166.,  7230.,  8654.,
      6974., 8398., 8078., 9630., 17772., 21004., 9950., 11630., 11310., 13118.,
      0.,    0.,    0.,    0.,    0.,     0.,     0.,    0.,     0.,     0.};
  const std::array<int, 4> in_shape = {{1, 8, 5, 2}};
  const int multiplier = 4;
  const auto padding = sycldnn::PaddingMode::VALID;
  const DataType max_input_val = 2048.0;
  this->run_input_backprop_test(exp_out, in_shape, multiplier, padding,
                                max_input_val);
}
TYPED_TEST(InputBackpropWindow3Stride2, SAME1x8x5x4x1) {
  using DataType = typename TestFixture::DataType;
  const std::vector<DataType> exp_out = {
      5.,    12.,   21.,   32.,   14.,   32.,   54.,   80.,   25.,   36.,
      49.,   64.,   54.,   80.,   110.,  144.,  45.,   60.,   77.,   96.,
      17.,   36.,   57.,   80.,   86.,   128.,  174.,  224.,  85.,   108.,
      133.,  160.,  222.,  272.,  326.,  384.,  153.,  180.,  209.,  240.,
      94.,   144.,  198.,  256.,  292.,  400.,  516.,  640.,  230.,  288.,
      350.,  416.,  564.,  688.,  820.,  960.,  366.,  432.,  502.,  576.,
      221.,  252.,  285.,  320.,  494.,  560.,  630.,  704.,  289.,  324.,
      361.,  400.,  630.,  704.,  782.,  864.,  357.,  396.,  437.,  480.,
      502.,  576.,  654.,  736.,  1108., 1264., 1428., 1600., 638.,  720.,
      806.,  896.,  1380., 1552., 1732., 1920., 774.,  864.,  958.,  1056.,
      425.,  468.,  513.,  560.,  902.,  992.,  1086., 1184., 493.,  540.,
      589.,  640.,  1038., 1136., 1238., 1344., 561.,  612.,  665.,  720.,
      910.,  1008., 1110., 1216., 1924., 2128., 2340., 2560., 1046., 1152.,
      1262., 1376., 2196., 2416., 2644., 2880., 1182., 1296., 1414., 1536.,
      629.,  684.,  741.,  800.,  1310., 1424., 1542., 1664., 697.,  756.,
      817.,  880.,  1446., 1568., 1694., 1824., 765.,  828.,  893.,  960.};
  const std::array<int, 4> in_shape = {{1, 8, 5, 4}};
  const int multiplier = 1;
  const auto padding = sycldnn::PaddingMode::SAME;
  const DataType max_input_val = 2048.0;
  this->run_input_backprop_test(exp_out, in_shape, multiplier, padding,
                                max_input_val);
}
TYPED_TEST(InputBackpropWindow3Stride2, VALID1x8x5x4x1) {
  using DataType = typename TestFixture::DataType;
  const std::vector<DataType> exp_out = {
      1.,   4.,   9.,    16.,   5.,   12.,  21.,  32.,   14.,   32.,   54.,
      80.,  25.,  36.,   49.,   64.,  45.,  60.,  77.,   96.,   13.,   28.,
      45.,  64.,  17.,   36.,   57.,  80.,  86.,  128.,  174.,  224.,  85.,
      108., 133., 160.,  105.,  132., 161., 192., 34.,   72.,   114.,  160.,
      74.,  120., 170.,  224.,  252., 352., 460., 576.,  210.,  264.,  322.,
      384., 282., 344.,  410.,  480., 117., 140., 165.,  192.,  153.,  180.,
      209., 240., 358.,  416.,  478., 544., 221., 252.,  285.,  320.,  273.,
      308., 345., 384.,  242.,  296., 354., 416., 346.,  408.,  474.,  544.,
      796., 928., 1068., 1216., 482., 552., 626., 704.,  618.,  696.,  778.,
      864., 221., 252.,  285.,  320., 289., 324., 361.,  400.,  630.,  704.,
      782., 864., 357.,  396.,  437., 480., 441., 484.,  529.,  576.,  425.,
      468., 513., 560.,  493.,  540., 589., 640., 1086., 1184., 1286., 1392.,
      609., 660., 713.,  768.,  693., 748., 805., 864.,  0.,    0.,    0.,
      0.,   0.,   0.,    0.,    0.,   0.,   0.,   0.,    0.,    0.,    0.,
      0.,   0.,   0.,    0.,    0.,   0.};
  const std::array<int, 4> in_shape = {{1, 8, 5, 4}};
  const int multiplier = 1;
  const auto padding = sycldnn::PaddingMode::VALID;
  const DataType max_input_val = 2048.0;
  this->run_input_backprop_test(exp_out, in_shape, multiplier, padding,
                                max_input_val);
}
TYPED_TEST(InputBackpropWindow3Stride2, SAME1x8x5x4x2) {
  using DataType = typename TestFixture::DataType;
  const std::vector<DataType> exp_out = {
      29.,    81.,    149.,   233.,   82.,    218.,   386.,   586.,   181.,
      265.,   365.,   481.,   386.,   586.,   818.,   1082.,  333.,   449.,
      581.,   729.,   101.,   249.,   413.,   593.,   610.,   938.,   1298.,
      1690.,  637.,   817.,   1013.,  1225.,  1682.,  2074.,  2498.,  2954.,
      1173.,  1385.,  1613.,  1857.,  658.,   1050.,  1474.,  1930.,  2132.,
      2980.,  3892.,  4868.,  1730.,  2186.,  2674.,  3194.,  4276.,  5252.,
      6292.,  7396.,  2802.,  3322.,  3874.,  4458.,  1709.,  1953.,  2213.,
      2489.,  3826.,  4346.,  4898.,  5482.,  2245.,  2521.,  2813.,  3121.,
      4898.,  5482.,  6098.,  6746.,  2781.,  3089.,  3413.,  3753.,  3874.,
      4458.,  5074.,  5722.,  8564.,  9796.,  11092., 12452., 4946.,  5594.,
      6274.,  6986.,  10708., 12068., 13492., 14980., 6018.,  6730.,  7474.,
      8250.,  3317.,  3657.,  4013.,  4385.,  7042.,  7754.,  8498.,  9274.,
      3853.,  4225.,  4613.,  5017.,  8114.,  8890.,  9698.,  10538., 4389.,
      4793.,  5213.,  5649.,  7090.,  7866.,  8674.,  9514.,  14996., 16612.,
      18292., 20036., 8162.,  9002.,  9874.,  10778., 17140., 18884., 20692.,
      22564., 9234.,  10138., 11074., 12042., 4925.,  5361.,  5813.,  6281.,
      10258., 11162., 12098., 13066., 5461.,  5929.,  6413.,  6913.,  11330.,
      12298., 13298., 14330., 5997.,  6497.,  7013.,  7545.};
  const std::array<int, 4> in_shape = {{1, 8, 5, 4}};
  const int multiplier = 2;
  const auto padding = sycldnn::PaddingMode::SAME;
  const DataType max_input_val = 2048.0;
  this->run_input_backprop_test(exp_out, in_shape, multiplier, padding,
                                max_input_val);
}
TYPED_TEST(InputBackpropWindow3Stride2, VALID1x8x5x4x2) {
  using DataType = typename TestFixture::DataType;
  const std::vector<DataType> exp_out = {
      5.,     25.,    61.,   113.,  29.,   81.,   149.,  233.,  82.,   218.,
      386.,   586.,   181.,  265.,  365.,  481.,  333.,  449.,  581.,  729.,
      77.,    193.,   325.,  473.,  101.,  249.,  413.,  593.,  610.,  938.,
      1298.,  1690.,  637.,  817.,  1013., 1225., 789.,  1001., 1229., 1473.,
      202.,   498.,   826.,  1186., 506.,  866.,  1258., 1682., 1828., 2612.,
      3460.,  4372.,  1578., 2002., 2458., 2946., 2138., 2626., 3146., 3698.,
      893.,   1073.,  1269., 1481., 1173., 1385., 1613., 1857., 2754., 3210.,
      3698.,  4218.,  1709., 1953., 2213., 2489., 2117., 2393., 2685., 2993.,
      1834.,  2258.,  2714., 3202., 2650., 3138., 3658., 4210., 6116., 7156.,
      8260.,  9428.,  3722., 4274., 4858., 5474., 4794., 5410., 6058., 6738.,
      1709.,  1953.,  2213., 2489., 2245., 2521., 2813., 3121., 4898., 5482.,
      6098.,  6746.,  2781., 3089., 3413., 3753., 3445., 3785., 4141., 4513.,
      3317.,  3657.,  4013., 4385., 3853., 4225., 4613., 5017., 8498., 9274.,
      10082., 10922., 4773., 5177., 5597., 6033., 5437., 5873., 6325., 6793.,
      0.,     0.,     0.,    0.,    0.,    0.,    0.,    0.,    0.,    0.,
      0.,     0.,     0.,    0.,    0.,    0.,    0.,    0.,    0.,    0.};
  const std::array<int, 4> in_shape = {{1, 8, 5, 4}};
  const int multiplier = 2;
  const auto padding = sycldnn::PaddingMode::VALID;
  const DataType max_input_val = 2048.0;
  this->run_input_backprop_test(exp_out, in_shape, multiplier, padding,
                                max_input_val);
}
TYPED_TEST(InputBackpropWindow3Stride2, SAME1x8x5x4x4) {
  using DataType = typename TestFixture::DataType;
  const std::vector<DataType> exp_out = {
      190.,   590.,   1118.,   1774.,   540.,    1596.,   2908.,   4476.,
      1374.,  2030.,  2814.,   3726.,   2908.,   4476.,   6300.,   8380.,
      2558.,  3470.,  4510.,   5678.,   670.,    1838.,   3134.,   4558.,
      4572.,  7164.,  10012.,  13116.,  4926.,   6350.,   7902.,   9582.,
      13084., 16188., 19548.,  23164.,  9182.,   10862.,  12670.,  14606.,
      4892.,  7996.,  11356.,  14972.,  16248.,  22968.,  30200.,  37944.,
      13404., 17020., 20892.,  25020.,  33272.,  41016.,  49272.,  58040.,
      21916., 26044., 30428.,  35068.,  13438.,  15374.,  17438.,  19630.,
      30108., 34236., 38620.,  43260.,  17694.,  19886.,  22206.,  24654.,
      38620., 43260., 48156.,  53308.,  21950.,  24398.,  26974.,  29678.,
      30428., 35068., 39964.,  45116.,  67320.,  77112.,  87416.,  98232.,
      38940., 44092., 49500.,  55164.,  84344.,  95160.,  106488., 118328.,
      47452., 53116., 59036.,  65212.,  26206.,  28910.,  31742.,  34702.,
      55644., 61308., 67228.,  73404.,  30462.,  33422.,  36510.,  39726.,
      64156., 70332., 76764.,  83452.,  34718.,  37934.,  41278.,  44750.,
      55964., 62140., 68572.,  75260.,  118392., 131256., 144632., 158520.,
      64476., 71164., 78108.,  85308.,  135416., 149304., 163704., 178616.,
      72988., 80188., 87644.,  95356.,  38974.,  42446.,  46046.,  49774.,
      81180., 88380., 95836.,  103548., 43230.,  46958.,  50814.,  54798.,
      89692., 97404., 105372., 113596., 47486.,  51470.,  55582.,  59822.};
  const std::array<int, 4> in_shape = {{1, 8, 5, 4}};
  const int multiplier = 4;
  const auto padding = sycldnn::PaddingMode::SAME;
  const DataType max_input_val = 2048.0;
  this->run_input_backprop_test(exp_out, in_shape, multiplier, padding,
                                max_input_val);
}
TYPED_TEST(InputBackpropWindow3Stride2, VALID1x8x5x4x4) {
  using DataType = typename TestFixture::DataType;
  const std::vector<DataType> exp_out = {
      30.,    174.,   446.,   846.,   190.,   590.,   1118.,  1774.,  540.,
      1596.,  2908.,  4476.,  1374.,  2030.,  2814.,  3726.,  2558.,  3470.,
      4510.,  5678.,  510.,   1422.,  2462.,  3630.,  670.,   1838.,  3134.,
      4558.,  4572.,  7164.,  10012., 13116., 4926.,  6350.,  7902.,  9582.,
      6110.,  7790.,  9598.,  11534., 1340.,  3676.,  6268.,  9116.,  3708.,
      6556.,  9660.,  13020., 13880., 20088., 26808., 34040., 12220., 15580.,
      19196., 23068., 16636., 20508., 24636., 29020., 6974.,  8398.,  9950.,
      11630., 9182.,  10862., 12670., 14606., 21596., 25212., 29084., 33212.,
      13438., 15374., 17438., 19630., 16670., 18862., 21182., 23630., 14268.,
      17628., 21244., 25116., 20732., 24604., 28732., 33116., 47928., 56184.,
      64952., 74232., 29244., 33628., 38268., 43164., 37756., 42652., 47804.,
      53212., 13438., 15374., 17438., 19630., 17694., 19886., 22206., 24654.,
      38620., 43260., 48156., 53308., 21950., 24398., 26974., 29678., 27230.,
      29934., 32766., 35726., 26206., 28910., 31742., 34702., 30462., 33422.,
      36510., 39726., 67228., 73404., 79836., 86524., 37790., 41006., 44350.,
      47822., 43070., 46542., 50142., 53870., 0.,     0.,     0.,     0.,
      0.,     0.,     0.,     0.,     0.,     0.,     0.,     0.,     0.,
      0.,     0.,     0.,     0.,     0.,     0.,     0.};
  const std::array<int, 4> in_shape = {{1, 8, 5, 4}};
  const int multiplier = 4;
  const auto padding = sycldnn::PaddingMode::VALID;
  const DataType max_input_val = 2048.0;
  this->run_input_backprop_test(exp_out, in_shape, multiplier, padding,
                                max_input_val);
}
TYPED_TEST(InputBackpropWindow3Stride2, SAME1x8x6x1x1) {
  using DataType = typename TestFixture::DataType;
  const std::vector<DataType> exp_out = {
      1.,  2.,  5.,   4.,  9.,   6.,  4.,  5.,  14.,  10., 24.,  15.,
      11., 16., 40.,  26., 60.,  36., 16., 20., 44.,  25., 54.,  30.,
      35., 46., 100., 56., 120., 66., 28., 35., 74.,  40., 84.,  45.,
      59., 76., 160., 86., 180., 96., 40., 50., 104., 55., 114., 60.};
  const std::array<int, 4> in_shape = {{1, 8, 6, 1}};
  const int multiplier = 1;
  const auto padding = sycldnn::PaddingMode::SAME;
  const DataType max_input_val = 2048.0;
  this->run_input_backprop_test(exp_out, in_shape, multiplier, padding,
                                max_input_val);
}
TYPED_TEST(InputBackpropWindow3Stride2, VALID1x8x6x1x1) {
  using DataType = typename TestFixture::DataType;
  const std::vector<DataType> exp_out = {
      1.,  2.,  5.,  4.,  6.,  0., 4.,  5.,  14., 10., 12., 0.,
      10., 14., 36., 24., 30., 0., 12., 15., 34., 20., 24., 0.,
      26., 34., 76., 44., 54., 0., 20., 25., 54., 30., 36., 0.,
      35., 40., 87., 48., 54., 0., 0.,  0.,  0.,  0.,  0.,  0.};
  const std::array<int, 4> in_shape = {{1, 8, 6, 1}};
  const int multiplier = 1;
  const auto padding = sycldnn::PaddingMode::VALID;
  const DataType max_input_val = 2048.0;
  this->run_input_backprop_test(exp_out, in_shape, multiplier, padding,
                                max_input_val);
}
TYPED_TEST(InputBackpropWindow3Stride2, SAME1x8x6x1x2) {
  using DataType = typename TestFixture::DataType;
  const std::vector<DataType> exp_out = {
      5.,   11.,  28.,   25.,  56.,   39.,  23.,  29.,  88.,  67.,  164., 105.,
      64.,  100., 260.,  176., 412.,  252., 113., 143., 316., 181., 392., 219.,
      244., 328., 716.,  404., 868.,  480., 203., 257., 544., 295., 620., 333.,
      424., 556., 1172., 632., 1324., 708., 293., 371., 772., 409., 848., 447.};
  const std::array<int, 4> in_shape = {{1, 8, 6, 1}};
  const int multiplier = 2;
  const auto padding = sycldnn::PaddingMode::SAME;
  const DataType max_input_val = 2048.0;
  this->run_input_backprop_test(exp_out, in_shape, multiplier, padding,
                                max_input_val);
}
TYPED_TEST(InputBackpropWindow3Stride2, VALID1x8x6x1x2) {
  using DataType = typename TestFixture::DataType;
  const std::vector<DataType> exp_out = {
      5.,   11.,  28.,  25.,  39.,  0., 23.,  29.,  88.,  67.,  81.,  0.,
      58.,  86.,  232., 162., 206., 0., 83.,  105., 240., 143., 173., 0.,
      178., 238., 536., 314., 390., 0., 143., 181., 392., 219., 265., 0.,
      257., 295., 644., 357., 403., 0., 0.,   0.,   0.,   0.,   0.,   0.};
  const std::array<int, 4> in_shape = {{1, 8, 6, 1}};
  const int multiplier = 2;
  const auto padding = sycldnn::PaddingMode::VALID;
  const DataType max_input_val = 2048.0;
  this->run_input_backprop_test(exp_out, in_shape, multiplier, padding,
                                max_input_val);
}
TYPED_TEST(InputBackpropWindow3Stride2, SAME1x8x6x1x4) {
  using DataType = typename TestFixture::DataType;
  const std::vector<DataType> exp_out = {
      30.,    70.,   180.,  174.,  388.,  278.,  150.,  190.,  612.,  486.,
      1204.,  782.,  420.,  692.,  1848., 1284., 3032., 1876., 846.,  1078.,
      2388.,  1374., 2980., 1670., 1812., 2468., 5400., 3060., 6584., 3652.,
      1542.,  1966., 4164., 2262., 4756., 2558., 3204., 4244., 8952., 4836.,
      10136., 5428., 2238., 2854., 5940., 3150., 6532., 3446.};
  const std::array<int, 4> in_shape = {{1, 8, 6, 1}};
  const int multiplier = 4;
  const auto padding = sycldnn::PaddingMode::SAME;
  const DataType max_input_val = 2048.0;
  this->run_input_backprop_test(exp_out, in_shape, multiplier, padding,
                                max_input_val);
}
TYPED_TEST(InputBackpropWindow3Stride2, VALID1x8x6x1x4) {
  using DataType = typename TestFixture::DataType;
  const std::vector<DataType> exp_out = {
      30.,   70.,   180.,  174.,  278.,  0.,    150.,  190.,  612.,  486.,
      590.,  0.,    380.,  588.,  1640., 1180., 1516., 0.,    614.,  782.,
      1796., 1078., 1310., 0.,    1308., 1772., 4008., 2364., 2956., 0.,
      1078., 1374., 2980., 1670., 2030., 0.,    1966., 2262., 4948., 2750.,
      3110., 0.,    0.,    0.,    0.,    0.,    0.,    0.};
  const std::array<int, 4> in_shape = {{1, 8, 6, 1}};
  const int multiplier = 4;
  const auto padding = sycldnn::PaddingMode::VALID;
  const DataType max_input_val = 2048.0;
  this->run_input_backprop_test(exp_out, in_shape, multiplier, padding,
                                max_input_val);
}
TYPED_TEST(InputBackpropWindow3Stride2, SAME1x8x6x2x1) {
  using DataType = typename TestFixture::DataType;
  const std::vector<DataType> exp_out = {
      1.,   4.,   3.,   8.,   8.,   20.,  9.,   16.,  20.,  36.,  15.,  24.,
      7.,   16.,  9.,   20.,  32.,  56.,  27.,  40.,  68.,  96.,  45.,  60.,
      20.,  44.,  36.,  64.,  100., 160., 72.,  104., 172., 240., 108., 144.,
      49.,  64.,  63.,  80.,  140., 176., 81.,  100., 176., 216., 99.,  120.,
      104., 140., 144., 184., 316., 400., 180., 224., 388., 480., 216., 264.,
      91.,  112., 117., 140., 248., 296., 135., 160., 284., 336., 153., 180.,
      188., 236., 252., 304., 532., 640., 288., 344., 604., 720., 324., 384.,
      133., 160., 171., 200., 356., 416., 189., 220., 392., 456., 207., 240.};
  const std::array<int, 4> in_shape = {{1, 8, 6, 2}};
  const int multiplier = 1;
  const auto padding = sycldnn::PaddingMode::SAME;
  const DataType max_input_val = 2048.0;
  this->run_input_backprop_test(exp_out, in_shape, multiplier, padding,
                                max_input_val);
}
TYPED_TEST(InputBackpropWindow3Stride2, VALID1x8x6x2x1) {
  using DataType = typename TestFixture::DataType;
  const std::vector<DataType> exp_out = {
      1.,   4.,   3.,   8.,   8.,   20.,  9.,   16.,  15.,  24.,  0., 0.,
      7.,   16.,  9.,   20.,  32.,  56.,  27.,  40.,  33.,  48.,  0., 0.,
      18.,  40.,  30.,  56.,  88.,  144., 66.,  96.,  86.,  120., 0., 0.,
      35.,  48.,  45.,  60.,  104., 136., 63.,  80.,  77.,  96.,  0., 0.,
      74.,  104., 102., 136., 232., 304., 138., 176., 174., 216., 0., 0.,
      63.,  80.,  81.,  100., 176., 216., 99.,  120., 121., 144., 0., 0.,
      117., 140., 135., 160., 296., 348., 165., 192., 187., 216., 0., 0.,
      0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0., 0.};
  const std::array<int, 4> in_shape = {{1, 8, 6, 2}};
  const int multiplier = 1;
  const auto padding = sycldnn::PaddingMode::VALID;
  const DataType max_input_val = 2048.0;
  this->run_input_backprop_test(exp_out, in_shape, multiplier, padding,
                                max_input_val);
}
TYPED_TEST(InputBackpropWindow3Stride2, SAME1x8x6x2x2) {
  using DataType = typename TestFixture::DataType;
  const std::vector<DataType> exp_out = {
      5.,    25.,   17.,   53.,   46.,   134.,  61.,   113.,  134.,  254.,
      105.,  173.,  41.,   109.,  53.,   137.,  214.,  398.,  193.,  293.,
      494.,  710.,  333.,  449.,  118.,  302.,  238.,  454.,  692.,  1156.,
      518.,  766.,  1252., 1780., 798.,  1078., 365.,  481.,  473.,  605.,
      1054., 1334., 613.,  761.,  1334., 1646., 753.,  917.,  766.,  1046.,
      1078., 1390., 2372., 3028., 1358., 1702., 2932., 3652., 1638., 2014.,
      689.,  853.,  893.,  1073., 1894., 2270., 1033., 1229., 2174., 2582.,
      1173., 1385., 1414., 1790., 1918., 2326., 4052., 4900., 2198., 2638.,
      4612., 5524., 2478., 2950., 1013., 1225., 1313., 1541., 2734., 3206.,
      1453., 1697., 3014., 3518., 1593., 1853.};
  const std::array<int, 4> in_shape = {{1, 8, 6, 2}};
  const int multiplier = 2;
  const auto padding = sycldnn::PaddingMode::SAME;
  const DataType max_input_val = 2048.0;
  this->run_input_backprop_test(exp_out, in_shape, multiplier, padding,
                                max_input_val);
}
TYPED_TEST(InputBackpropWindow3Stride2, VALID1x8x6x2x2) {
  using DataType = typename TestFixture::DataType;
  const std::vector<DataType> exp_out = {
      5.,    25.,   17.,   53.,   46.,   134., 61.,  113.,  105.,  173.,  0.,
      0.,    41.,   109.,  53.,   137.,  214., 398., 193.,  293.,  237.,  353.,
      0.,    0.,    106.,  274.,  194.,  394., 604., 1036., 474.,  706.,  626.,
      890.,  0.,    0.,    257.,  357.,  333., 449., 774.,  1022., 473.,  605.,
      581.,  729.,  0.,    0.,    538.,  770., 754., 1018., 1724., 2284., 1034.,
      1330., 1314., 1642., 0.,    0.,    473., 605., 613.,  761.,  1334., 1646.,
      753.,  917.,  925.,  1105., 0.,    0.,   893., 1073., 1033., 1229., 2270.,
      2678., 1269., 1481., 1441., 1669., 0.,   0.,   0.,    0.,    0.,    0.,
      0.,    0.,    0.,    0.,    0.,    0.,   0.,   0.};
  const std::array<int, 4> in_shape = {{1, 8, 6, 2}};
  const int multiplier = 2;
  const auto padding = sycldnn::PaddingMode::VALID;
  const DataType max_input_val = 2048.0;
  this->run_input_backprop_test(exp_out, in_shape, multiplier, padding,
                                max_input_val);
}
TYPED_TEST(InputBackpropWindow3Stride2, SAME1x8x6x2x4) {
  using DataType = typename TestFixture::DataType;
  const std::vector<DataType> exp_out = {
      30.,    174.,   110.,   382.,   300.,   972.,   446.,   846.,   972.,
      1900.,  782.,   1310.,  270.,   798.,   350.,   1006.,  1548.,  2988.,
      1454.,  2238.,  3756.,  5452.,  2558.,  3470.,  780.,   2220.,  1708.,
      3404.,  5112.,  8760.,  3916.,  5868.,  9528.,  13688., 6124.,  8332.,
      2814.,  3726.,  3662.,  4702.,  8172.,  10380., 4766.,  5934.,  10380.,
      12844., 5870.,  7166.,  5868.,  8076.,  8332.,  10796., 18360., 23544.,
      10540., 13260., 22776., 28472., 12748., 15724., 5358.,  6654.,  6974.,
      8398.,  14796., 17772., 8078.,  9630.,  17004., 20236., 9182.,  10862.,
      10956., 13932., 14956., 18188., 31608., 38328., 17164., 20652., 36024.,
      43256., 19372., 23116., 7902.,  9582.,  10286., 12094., 21420., 25164.,
      11390., 13326., 23628., 27628., 12494., 14558.};
  const std::array<int, 4> in_shape = {{1, 8, 6, 2}};
  const int multiplier = 4;
  const auto padding = sycldnn::PaddingMode::SAME;
  const DataType max_input_val = 2048.0;
  this->run_input_backprop_test(exp_out, in_shape, multiplier, padding,
                                max_input_val);
}
TYPED_TEST(InputBackpropWindow3Stride2, VALID1x8x6x2x4) {
  using DataType = typename TestFixture::DataType;
  const std::vector<DataType> exp_out = {
      30.,    174.,   110.,   382.,   300.,   972.,   446.,  846.,   782.,
      1310.,  0.,     0.,     270.,   798.,   350.,   1006., 1548.,  2988.,
      1454.,  2238.,  1790.,  2702.,  0.,     0.,     700.,  2012.,  1372.,
      2940.,  4440.,  7832.,  3580.,  5404.,  4764.,  6844., 0.,     0.,
      1966.,  2750.,  2558.,  3470.,  5964.,  7916.,  3662., 4702.,  4510.,
      5678.,  0.,     0.,     4092.,  5916.,  5788.,  7868., 13272., 17688.,
      7996.,  10332., 10204., 12796., 0.,     0.,     3662., 4702.,  4766.,
      5934.,  10380., 12844., 5870.,  7166.,  7230.,  8654., 0.,     0.,
      6974.,  8398.,  8078.,  9630.,  17772., 21004., 9950., 11630., 11310.,
      13118., 0.,     0.,     0.,     0.,     0.,     0.,    0.,     0.,
      0.,     0.,     0.,     0.,     0.,     0.};
  const std::array<int, 4> in_shape = {{1, 8, 6, 2}};
  const int multiplier = 4;
  const auto padding = sycldnn::PaddingMode::VALID;
  const DataType max_input_val = 2048.0;
  this->run_input_backprop_test(exp_out, in_shape, multiplier, padding,
                                max_input_val);
}
TYPED_TEST(InputBackpropWindow3Stride2, SAME1x8x6x4x1) {
  using DataType = typename TestFixture::DataType;
  const std::vector<DataType> exp_out = {
      1.,    4.,    9.,    16.,   5.,    12.,   21.,   32.,   14.,   32.,
      54.,   80.,   25.,   36.,   49.,   64.,   54.,   80.,   110.,  144.,
      45.,   60.,   77.,   96.,   13.,   28.,   45.,   64.,   17.,   36.,
      57.,   80.,   86.,   128.,  174.,  224.,  85.,   108.,  133.,  160.,
      222.,  272.,  326.,  384.,  153.,  180.,  209.,  240.,  38.,   80.,
      126.,  176.,  94.,   144.,  198.,  256.,  292.,  400.,  516.,  640.,
      230.,  288.,  350.,  416.,  564.,  688.,  820.,  960.,  366.,  432.,
      502.,  576.,  169.,  196.,  225.,  256.,  221.,  252.,  285.,  320.,
      494.,  560.,  630.,  704.,  289.,  324.,  361.,  400.,  630.,  704.,
      782.,  864.,  357.,  396.,  437.,  480.,  350.,  416.,  486.,  560.,
      502.,  576.,  654.,  736.,  1108., 1264., 1428., 1600., 638.,  720.,
      806.,  896.,  1380., 1552., 1732., 1920., 774.,  864.,  958.,  1056.,
      325.,  364.,  405.,  448.,  425.,  468.,  513.,  560.,  902.,  992.,
      1086., 1184., 493.,  540.,  589.,  640.,  1038., 1136., 1238., 1344.,
      561.,  612.,  665.,  720.,  662.,  752.,  846.,  944.,  910.,  1008.,
      1110., 1216., 1924., 2128., 2340., 2560., 1046., 1152., 1262., 1376.,
      2196., 2416., 2644., 2880., 1182., 1296., 1414., 1536., 481.,  532.,
      585.,  640.,  629.,  684.,  741.,  800.,  1310., 1424., 1542., 1664.,
      697.,  756.,  817.,  880.,  1446., 1568., 1694., 1824., 765.,  828.,
      893.,  960.};
  const std::array<int, 4> in_shape = {{1, 8, 6, 4}};
  const int multiplier = 1;
  const auto padding = sycldnn::PaddingMode::SAME;
  const DataType max_input_val = 2048.0;
  this->run_input_backprop_test(exp_out, in_shape, multiplier, padding,
                                max_input_val);
}
TYPED_TEST(InputBackpropWindow3Stride2, VALID1x8x6x4x1) {
  using DataType = typename TestFixture::DataType;
  const std::vector<DataType> exp_out = {
      1.,    4.,    9.,   16.,  5.,   12.,  21.,  32.,   14.,   32.,   54.,
      80.,   25.,   36.,  49.,  64.,  45.,  60.,  77.,   96.,   0.,    0.,
      0.,    0.,    13.,  28.,  45.,  64.,  17.,  36.,   57.,   80.,   86.,
      128.,  174.,  224., 85.,  108., 133., 160., 105.,  132.,  161.,  192.,
      0.,    0.,    0.,   0.,   34.,  72.,  114., 160.,  74.,   120.,  170.,
      224.,  252.,  352., 460., 576., 210., 264., 322.,  384.,  282.,  344.,
      410.,  480.,  0.,   0.,   0.,   0.,   117., 140.,  165.,  192.,  153.,
      180.,  209.,  240., 358., 416., 478., 544., 221.,  252.,  285.,  320.,
      273.,  308.,  345., 384., 0.,   0.,   0.,   0.,    242.,  296.,  354.,
      416.,  346.,  408., 474., 544., 796., 928., 1068., 1216., 482.,  552.,
      626.,  704.,  618., 696., 778., 864., 0.,   0.,    0.,    0.,    221.,
      252.,  285.,  320., 289., 324., 361., 400., 630.,  704.,  782.,  864.,
      357.,  396.,  437., 480., 441., 484., 529., 576.,  0.,    0.,    0.,
      0.,    425.,  468., 513., 560., 493., 540., 589.,  640.,  1086., 1184.,
      1286., 1392., 609., 660., 713., 768., 693., 748.,  805.,  864.,  0.,
      0.,    0.,    0.,   0.,   0.,   0.,   0.,   0.,    0.,    0.,    0.,
      0.,    0.,    0.,   0.,   0.,   0.,   0.,   0.,    0.,    0.,    0.,
      0.,    0.,    0.,   0.,   0.};
  const std::array<int, 4> in_shape = {{1, 8, 6, 4}};
  const int multiplier = 1;
  const auto padding = sycldnn::PaddingMode::VALID;
  const DataType max_input_val = 2048.0;
  this->run_input_backprop_test(exp_out, in_shape, multiplier, padding,
                                max_input_val);
}
TYPED_TEST(InputBackpropWindow3Stride2, SAME1x8x6x4x2) {
  using DataType = typename TestFixture::DataType;
  const std::vector<DataType> exp_out = {
      5.,     25.,    61.,    113.,   29.,    81.,    149.,   233.,   82.,
      218.,   386.,   586.,   181.,   265.,   365.,   481.,   386.,   586.,
      818.,   1082.,  333.,   449.,   581.,   729.,   77.,    193.,   325.,
      473.,   101.,   249.,   413.,   593.,   610.,   938.,   1298.,  1690.,
      637.,   817.,   1013.,  1225.,  1682.,  2074.,  2498.,  2954.,  1173.,
      1385.,  1613.,  1857.,  226.,   554.,   914.,   1306.,  658.,   1050.,
      1474.,  1930.,  2132.,  2980.,  3892.,  4868.,  1730.,  2186.,  2674.,
      3194.,  4276.,  5252.,  6292.,  7396.,  2802.,  3322.,  3874.,  4458.,
      1301.,  1513.,  1741.,  1985.,  1709.,  1953.,  2213.,  2489.,  3826.,
      4346.,  4898.,  5482.,  2245.,  2521.,  2813.,  3121.,  4898.,  5482.,
      6098.,  6746.,  2781.,  3089.,  3413.,  3753.,  2674.,  3194.,  3746.,
      4330.,  3874.,  4458.,  5074.,  5722.,  8564.,  9796.,  11092., 12452.,
      4946.,  5594.,  6274.,  6986.,  10708., 12068., 13492., 14980., 6018.,
      6730.,  7474.,  8250.,  2525.,  2833.,  3157.,  3497.,  3317.,  3657.,
      4013.,  4385.,  7042.,  7754.,  8498.,  9274.,  3853.,  4225.,  4613.,
      5017.,  8114.,  8890.,  9698.,  10538., 4389.,  4793.,  5213.,  5649.,
      5122.,  5834.,  6578.,  7354.,  7090.,  7866.,  8674.,  9514.,  14996.,
      16612., 18292., 20036., 8162.,  9002.,  9874.,  10778., 17140., 18884.,
      20692., 22564., 9234.,  10138., 11074., 12042., 3749.,  4153.,  4573.,
      5009.,  4925.,  5361.,  5813.,  6281.,  10258., 11162., 12098., 13066.,
      5461.,  5929.,  6413.,  6913.,  11330., 12298., 13298., 14330., 5997.,
      6497.,  7013.,  7545.};
  const std::array<int, 4> in_shape = {{1, 8, 6, 4}};
  const int multiplier = 2;
  const auto padding = sycldnn::PaddingMode::SAME;
  const DataType max_input_val = 2048.0;
  this->run_input_backprop_test(exp_out, in_shape, multiplier, padding,
                                max_input_val);
}
TYPED_TEST(InputBackpropWindow3Stride2, VALID1x8x6x4x2) {
  using DataType = typename TestFixture::DataType;
  const std::vector<DataType> exp_out = {
      5.,    25.,   61.,   113.,  29.,    81.,    149.,  233.,  82.,   218.,
      386.,  586.,  181.,  265.,  365.,   481.,   333.,  449.,  581.,  729.,
      0.,    0.,    0.,    0.,    77.,    193.,   325.,  473.,  101.,  249.,
      413.,  593.,  610.,  938.,  1298.,  1690.,  637.,  817.,  1013., 1225.,
      789.,  1001., 1229., 1473., 0.,     0.,     0.,    0.,    202.,  498.,
      826.,  1186., 506.,  866.,  1258.,  1682.,  1828., 2612., 3460., 4372.,
      1578., 2002., 2458., 2946., 2138.,  2626.,  3146., 3698., 0.,    0.,
      0.,    0.,    893.,  1073., 1269.,  1481.,  1173., 1385., 1613., 1857.,
      2754., 3210., 3698., 4218., 1709.,  1953.,  2213., 2489., 2117., 2393.,
      2685., 2993., 0.,    0.,    0.,     0.,     1834., 2258., 2714., 3202.,
      2650., 3138., 3658., 4210., 6116.,  7156.,  8260., 9428., 3722., 4274.,
      4858., 5474., 4794., 5410., 6058.,  6738.,  0.,    0.,    0.,    0.,
      1709., 1953., 2213., 2489., 2245.,  2521.,  2813., 3121., 4898., 5482.,
      6098., 6746., 2781., 3089., 3413.,  3753.,  3445., 3785., 4141., 4513.,
      0.,    0.,    0.,    0.,    3317.,  3657.,  4013., 4385., 3853., 4225.,
      4613., 5017., 8498., 9274., 10082., 10922., 4773., 5177., 5597., 6033.,
      5437., 5873., 6325., 6793., 0.,     0.,     0.,    0.,    0.,    0.,
      0.,    0.,    0.,    0.,    0.,     0.,     0.,    0.,    0.,    0.,
      0.,    0.,    0.,    0.,    0.,     0.,     0.,    0.,    0.,    0.,
      0.,    0.};
  const std::array<int, 4> in_shape = {{1, 8, 6, 4}};
  const int multiplier = 2;
  const auto padding = sycldnn::PaddingMode::VALID;
  const DataType max_input_val = 2048.0;
  this->run_input_backprop_test(exp_out, in_shape, multiplier, padding,
                                max_input_val);
}
TYPED_TEST(InputBackpropWindow3Stride2, SAME1x8x6x4x4) {
  using DataType = typename TestFixture::DataType;
  const std::vector<DataType> exp_out = {
      30.,     174.,    446.,    846.,    190.,   590.,   1118.,  1774.,
      540.,    1596.,   2908.,   4476.,   1374.,  2030.,  2814.,  3726.,
      2908.,   4476.,   6300.,   8380.,   2558.,  3470.,  4510.,  5678.,
      510.,    1422.,   2462.,   3630.,   670.,   1838.,  3134.,  4558.,
      4572.,   7164.,   10012.,  13116.,  4926.,  6350.,  7902.,  9582.,
      13084.,  16188.,  19548.,  23164.,  9182.,  10862., 12670., 14606.,
      1500.,   4092.,   6940.,   10044.,  4892.,  7996.,  11356., 14972.,
      16248.,  22968.,  30200.,  37944.,  13404., 17020., 20892., 25020.,
      33272.,  41016.,  49272.,  58040.,  21916., 26044., 30428., 35068.,
      10206.,  11886.,  13694.,  15630.,  13438., 15374., 17438., 19630.,
      30108.,  34236.,  38620.,  43260.,  17694., 19886., 22206., 24654.,
      38620.,  43260.,  48156.,  53308.,  21950., 24398., 26974., 29678.,
      20892.,  25020.,  29404.,  34044.,  30428., 35068., 39964., 45116.,
      67320.,  77112.,  87416.,  98232.,  38940., 44092., 49500., 55164.,
      84344.,  95160.,  106488., 118328., 47452., 53116., 59036., 65212.,
      19902.,  22350.,  24926.,  27630.,  26206., 28910., 31742., 34702.,
      55644.,  61308.,  67228.,  73404.,  30462., 33422., 36510., 39726.,
      64156.,  70332.,  76764.,  83452.,  34718., 37934., 41278., 44750.,
      40284.,  45948.,  51868.,  58044.,  55964., 62140., 68572., 75260.,
      118392., 131256., 144632., 158520., 64476., 71164., 78108., 85308.,
      135416., 149304., 163704., 178616., 72988., 80188., 87644., 95356.,
      29598.,  32814.,  36158.,  39630.,  38974., 42446., 46046., 49774.,
      81180.,  88380.,  95836.,  103548., 43230., 46958., 50814., 54798.,
      89692.,  97404.,  105372., 113596., 47486., 51470., 55582., 59822.};
  const std::array<int, 4> in_shape = {{1, 8, 6, 4}};
  const int multiplier = 4;
  const auto padding = sycldnn::PaddingMode::SAME;
  const DataType max_input_val = 2048.0;
  this->run_input_backprop_test(exp_out, in_shape, multiplier, padding,
                                max_input_val);
}
TYPED_TEST(InputBackpropWindow3Stride2, VALID1x8x6x4x4) {
  using DataType = typename TestFixture::DataType;
  const std::vector<DataType> exp_out = {
      30.,    174.,   446.,   846.,   190.,   590.,   1118.,  1774.,  540.,
      1596.,  2908.,  4476.,  1374.,  2030.,  2814.,  3726.,  2558.,  3470.,
      4510.,  5678.,  0.,     0.,     0.,     0.,     510.,   1422.,  2462.,
      3630.,  670.,   1838.,  3134.,  4558.,  4572.,  7164.,  10012., 13116.,
      4926.,  6350.,  7902.,  9582.,  6110.,  7790.,  9598.,  11534., 0.,
      0.,     0.,     0.,     1340.,  3676.,  6268.,  9116.,  3708.,  6556.,
      9660.,  13020., 13880., 20088., 26808., 34040., 12220., 15580., 19196.,
      23068., 16636., 20508., 24636., 29020., 0.,     0.,     0.,     0.,
      6974.,  8398.,  9950.,  11630., 9182.,  10862., 12670., 14606., 21596.,
      25212., 29084., 33212., 13438., 15374., 17438., 19630., 16670., 18862.,
      21182., 23630., 0.,     0.,     0.,     0.,     14268., 17628., 21244.,
      25116., 20732., 24604., 28732., 33116., 47928., 56184., 64952., 74232.,
      29244., 33628., 38268., 43164., 37756., 42652., 47804., 53212., 0.,
      0.,     0.,     0.,     13438., 15374., 17438., 19630., 17694., 19886.,
      22206., 24654., 38620., 43260., 48156., 53308., 21950., 24398., 26974.,
      29678., 27230., 29934., 32766., 35726., 0.,     0.,     0.,     0.,
      26206., 28910., 31742., 34702., 30462., 33422., 36510., 39726., 67228.,
      73404., 79836., 86524., 37790., 41006., 44350., 47822., 43070., 46542.,
      50142., 53870., 0.,     0.,     0.,     0.,     0.,     0.,     0.,
      0.,     0.,     0.,     0.,     0.,     0.,     0.,     0.,     0.,
      0.,     0.,     0.,     0.,     0.,     0.,     0.,     0.,     0.,
      0.,     0.,     0.};
  const std::array<int, 4> in_shape = {{1, 8, 6, 4}};
  const int multiplier = 4;
  const auto padding = sycldnn::PaddingMode::VALID;
  const DataType max_input_val = 2048.0;
  this->run_input_backprop_test(exp_out, in_shape, multiplier, padding,
                                max_input_val);
}
TYPED_TEST(InputBackpropWindow3Stride2, SAME1x8x8x1x1) {
  using DataType = typename TestFixture::DataType;
  const std::vector<DataType> exp_out = {
      1.,   2.,   5.,   4.,   9.,  6.,   13.,  8.,   4.,   5.,   14.,
      10.,  24.,  15.,  34.,  20., 12.,  18.,  44.,  28.,  64.,  38.,
      84.,  48.,  20.,  25.,  54., 30.,  64.,  35.,  74.,  40.,  44.,
      58.,  124., 68.,  144., 78., 164., 88.,  36.,  45.,  94.,  50.,
      104., 55.,  114., 60.,  76., 98.,  204., 108., 224., 118., 244.,
      128., 52.,  65.,  134., 70., 144., 75.,  154., 80.};
  const std::array<int, 4> in_shape = {{1, 8, 8, 1}};
  const int multiplier = 1;
  const auto padding = sycldnn::PaddingMode::SAME;
  const DataType max_input_val = 2048.0;
  this->run_input_backprop_test(exp_out, in_shape, multiplier, padding,
                                max_input_val);
}
TYPED_TEST(InputBackpropWindow3Stride2, VALID1x8x8x1x1) {
  using DataType = typename TestFixture::DataType;
  const std::vector<DataType> exp_out = {
      1.,   2.,  5.,  4.,  9.,  6.,  9.,  0.,  4.,   5.,  14.,  10.,  24.,
      15.,  18., 0.,  11., 16., 40., 26., 60., 36.,  45., 0.,   16.,  20.,
      44.,  25., 54., 30., 36., 0.,  35., 46., 100., 56., 120., 66.,  81.,
      0.,   28., 35., 74., 40., 84., 45., 54., 0.,   49., 56.,  119., 64.,
      135., 72., 81., 0.,  0.,  0.,  0.,  0.,  0.,   0.,  0.,   0.};
  const std::array<int, 4> in_shape = {{1, 8, 8, 1}};
  const int multiplier = 1;
  const auto padding = sycldnn::PaddingMode::VALID;
  const DataType max_input_val = 2048.0;
  this->run_input_backprop_test(exp_out, in_shape, multiplier, padding,
                                max_input_val);
}
TYPED_TEST(InputBackpropWindow3Stride2, SAME1x8x8x1x2) {
  using DataType = typename TestFixture::DataType;
  const std::vector<DataType> exp_out = {
      5.,   11.,  28.,  25.,   56.,  39.,   84.,   53.,   23.,   29.,  88.,
      67.,  164., 105., 240.,  143., 70.,   114.,  288.,  190.,  440., 266.,
      592., 342., 143., 181.,  392., 219.,  468.,  257.,  544.,  295., 310.,
      418., 896., 494., 1048., 570., 1200., 646.,  263.,  333.,  696., 371.,
      772., 409., 848., 447.,  550., 722.,  1504., 798.,  1656., 874., 1808.,
      950., 383., 485., 1000., 523., 1076., 561.,  1152., 599.};
  const std::array<int, 4> in_shape = {{1, 8, 8, 1}};
  const int multiplier = 2;
  const auto padding = sycldnn::PaddingMode::SAME;
  const DataType max_input_val = 2048.0;
  this->run_input_backprop_test(exp_out, in_shape, multiplier, padding,
                                max_input_val);
}
TYPED_TEST(InputBackpropWindow3Stride2, VALID1x8x8x1x2) {
  using DataType = typename TestFixture::DataType;
  const std::vector<DataType> exp_out = {
      5.,   11.,  28.,  25.,  56.,  39.,  61.,  0.,   23.,   29.,  88.,
      67.,  164., 105., 127., 0.,   64.,  100., 260., 176.,  412., 252.,
      320., 0.,   113., 143., 316., 181., 392., 219., 265.,  0.,   244.,
      328., 716., 404., 868., 480., 596., 0.,   203., 257.,  544., 295.,
      620., 333., 403., 0.,   365., 419., 892., 481., 1016., 543., 613.,
      0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.};
  const std::array<int, 4> in_shape = {{1, 8, 8, 1}};
  const int multiplier = 2;
  const auto padding = sycldnn::PaddingMode::VALID;
  const DataType max_input_val = 2048.0;
  this->run_input_backprop_test(exp_out, in_shape, multiplier, padding,
                                max_input_val);
}
TYPED_TEST(InputBackpropWindow3Stride2, SAME1x8x8x1x4) {
  using DataType = typename TestFixture::DataType;
  const std::vector<DataType> exp_out = {
      30.,    70.,   180.,   174.,  388.,   278.,  596.,  382.,  150.,  190.,
      612.,   486.,  1204.,  782.,  1796.,  1078., 460.,  796.,  2056., 1388.,
      3240.,  1980., 4424.,  2572., 1078.,  1374., 2980., 1670., 3572., 1966.,
      4164.,  2262., 2316.,  3164., 6792.,  3756., 7976., 4348., 9160., 4940.,
      2006.,  2558., 5348.,  2854., 5940.,  3150., 6532., 3446., 4172., 5532.,
      11528., 6124., 12712., 6716., 13896., 7308., 2934., 3742., 7716., 4038.,
      8308.,  4334., 8900.,  4630.};
  const std::array<int, 4> in_shape = {{1, 8, 8, 1}};
  const int multiplier = 4;
  const auto padding = sycldnn::PaddingMode::SAME;
  const DataType max_input_val = 2048.0;
  this->run_input_backprop_test(exp_out, in_shape, multiplier, padding,
                                max_input_val);
}
TYPED_TEST(InputBackpropWindow3Stride2, VALID1x8x8x1x4) {
  using DataType = typename TestFixture::DataType;
  const std::vector<DataType> exp_out = {
      30.,   70.,   180.,  174.,  388.,  278.,  446.,  0.,    150.,  190.,
      612.,  486.,  1204., 782.,  950.,  0.,    420.,  692.,  1848., 1284.,
      3032., 1876., 2404., 0.,    846.,  1078., 2388., 1374., 2980., 1670.,
      2030., 0.,    1812., 2468., 5400., 3060., 6584., 3652., 4564., 0.,
      1542., 1966., 4164., 2262., 4756., 2558., 3110., 0.,    2814., 3238.,
      6900., 3726., 7876., 4214., 4766., 0.,    0.,    0.,    0.,    0.,
      0.,    0.,    0.,    0.};
  const std::array<int, 4> in_shape = {{1, 8, 8, 1}};
  const int multiplier = 4;
  const auto padding = sycldnn::PaddingMode::VALID;
  const DataType max_input_val = 2048.0;
  this->run_input_backprop_test(exp_out, in_shape, multiplier, padding,
                                max_input_val);
}
TYPED_TEST(InputBackpropWindow3Stride2, SAME1x8x8x2x1) {
  using DataType = typename TestFixture::DataType;
  const std::vector<DataType> exp_out = {
      1.,   4.,   3.,   8.,   8.,   20.,  9.,   16.,  20.,  36.,  15.,  24.,
      32.,  52.,  21.,  32.,  7.,   16.,  9.,   20.,  32.,  56.,  27.,  40.,
      68.,  96.,  45.,  60.,  104., 136., 63.,  80.,  22.,  48.,  42.,  72.,
      112., 176., 78.,  112., 184., 256., 114., 152., 256., 336., 150., 192.,
      63.,  80.,  81.,  100., 176., 216., 99.,  120., 212., 256., 117., 140.,
      248., 296., 135., 160., 134., 176., 186., 232., 400., 496., 222., 272.,
      472., 576., 258., 312., 544., 656., 294., 352., 119., 144., 153., 180.,
      320., 376., 171., 200., 356., 416., 189., 220., 392., 456., 207., 240.,
      246., 304., 330., 392., 688., 816., 366., 432., 760., 896., 402., 472.,
      832., 976., 438., 512., 175., 208., 225., 260., 464., 536., 243., 280.,
      500., 576., 261., 300., 536., 616., 279., 320.};
  const std::array<int, 4> in_shape = {{1, 8, 8, 2}};
  const int multiplier = 1;
  const auto padding = sycldnn::PaddingMode::SAME;
  const DataType max_input_val = 2048.0;
  this->run_input_backprop_test(exp_out, in_shape, multiplier, padding,
                                max_input_val);
}
TYPED_TEST(InputBackpropWindow3Stride2, VALID1x8x8x2x1) {
  using DataType = typename TestFixture::DataType;
  const std::vector<DataType> exp_out = {
      1.,   4.,   3.,   8.,   8.,   20.,  9.,   16.,  20.,  36.,  15.,  24.,
      25.,  36.,  0.,   0.,   7.,   16.,  9.,   20.,  32.,  56.,  27.,  40.,
      68.,  96.,  45.,  60.,  55.,  72.,  0.,   0.,   20.,  44.,  36.,  64.,
      100., 160., 72.,  104., 172., 240., 108., 144., 140., 180., 0.,   0.,
      49.,  64.,  63.,  80.,  140., 176., 81.,  100., 176., 216., 99.,  120.,
      121., 144., 0.,   0.,   104., 140., 144., 184., 316., 400., 180., 224.,
      388., 480., 216., 264., 272., 324., 0.,   0.,   91.,  112., 117., 140.,
      248., 296., 135., 160., 284., 336., 153., 180., 187., 216., 0.,   0.,
      169., 196., 195., 224., 416., 476., 225., 256., 476., 540., 255., 288.,
      289., 324., 0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,
      0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.};
  const std::array<int, 4> in_shape = {{1, 8, 8, 2}};
  const int multiplier = 1;
  const auto padding = sycldnn::PaddingMode::VALID;
  const DataType max_input_val = 2048.0;
  this->run_input_backprop_test(exp_out, in_shape, multiplier, padding,
                                max_input_val);
}
TYPED_TEST(InputBackpropWindow3Stride2, SAME1x8x8x2x2) {
  using DataType = typename TestFixture::DataType;
  const std::vector<DataType> exp_out = {
      5.,    25.,   17.,   53.,   46.,   134.,  61.,   113.,  134.,  254.,
      105.,  173.,  222.,  374.,  149.,  233.,  41.,   109.,  53.,   137.,
      214.,  398.,  193.,  293.,  494.,  710.,  333.,  449.,  774.,  1022.,
      473.,  605.,  130.,  330.,  282.,  514.,  780.,  1276., 562.,  826.,
      1340., 1900., 842.,  1138., 1900., 2524., 1122., 1450., 473.,  605.,
      613.,  761.,  1334., 1646., 753.,  917.,  1614., 1958., 893.,  1073.,
      1894., 2270., 1033., 1229., 994.,  1322., 1402., 1762., 3020., 3772.,
      1682., 2074., 3580., 4396., 1962., 2386., 4140., 5020., 2242., 2698.,
      905.,  1101., 1173., 1385., 2454., 2894., 1313., 1541., 2734., 3206.,
      1453., 1697., 3014., 3518., 1593., 1853., 1858., 2314., 2522., 3010.,
      5260., 6268., 2802., 3322., 5820., 6892., 3082., 3634., 6380., 7516.,
      3362., 3946., 1337., 1597., 1733., 2009., 3574., 4142., 1873., 2165.,
      3854., 4454., 2013., 2321., 4134., 4766., 2153., 2477.};
  const std::array<int, 4> in_shape = {{1, 8, 8, 2}};
  const int multiplier = 2;
  const auto padding = sycldnn::PaddingMode::SAME;
  const DataType max_input_val = 2048.0;
  this->run_input_backprop_test(exp_out, in_shape, multiplier, padding,
                                max_input_val);
}
TYPED_TEST(InputBackpropWindow3Stride2, VALID1x8x8x2x2) {
  using DataType = typename TestFixture::DataType;
  const std::vector<DataType> exp_out = {
      5.,    25.,   17.,   53.,   46.,   134.,  61.,   113.,  134.,  254.,
      105.,  173.,  181.,  265.,  0.,    0.,    41.,   109.,  53.,   137.,
      214.,  398.,  193.,  293.,  494.,  710.,  333.,  449.,  409.,  541.,
      0.,    0.,    118.,  302.,  238.,  454.,  692.,  1156., 518.,  766.,
      1252., 1780., 798.,  1078., 1046., 1358., 0.,    0.,    365.,  481.,
      473.,  605.,  1054., 1334., 613.,  761.,  1334., 1646., 753.,  917.,
      925.,  1105., 0.,    0.,    766.,  1046., 1078., 1390., 2372., 3028.,
      1358., 1702., 2932., 3652., 1638., 2014., 2078., 2486., 0.,    0.,
      689.,  853.,  893.,  1073., 1894., 2270., 1033., 1229., 2174., 2582.,
      1173., 1385., 1441., 1669., 0.,    0.,    1301., 1513., 1505., 1733.,
      3214., 3686., 1741., 1985., 3686., 4190., 1977., 2237., 2245., 2521.,
      0.,    0.,    0.,    0.,    0.,    0.,    0.,    0.,    0.,    0.,
      0.,    0.,    0.,    0.,    0.,    0.,    0.,    0.};
  const std::array<int, 4> in_shape = {{1, 8, 8, 2}};
  const int multiplier = 2;
  const auto padding = sycldnn::PaddingMode::VALID;
  const DataType max_input_val = 2048.0;
  this->run_input_backprop_test(exp_out, in_shape, multiplier, padding,
                                max_input_val);
}
TYPED_TEST(InputBackpropWindow3Stride2, SAME1x8x8x2x4) {
  using DataType = typename TestFixture::DataType;
  const std::vector<DataType> exp_out = {
      30.,    174.,   110.,   382.,   300.,   972.,   446.,   846.,   972.,
      1900.,  782.,   1310.,  1644.,  2828.,  1118.,  1774.,  270.,   798.,
      350.,   1006.,  1548.,  2988.,  1454.,  2238.,  3756.,  5452.,  2558.,
      3470.,  5964.,  7916.,  3662.,  4702.,  860.,   2428.,  2044.,  3868.,
      5784.,  9688.,  4252.,  6332.,  10200., 14616., 6460.,  8796.,  14616.,
      19544., 8668.,  11260., 3662.,  4702.,  4766.,  5934.,  10380., 12844.,
      5870.,  7166.,  12588., 15308., 6974.,  8398.,  14796., 17772., 8078.,
      9630.,  7644.,  10236., 10876., 13724., 23448., 29400., 13084., 16188.,
      27864., 34328., 15292., 18652., 32280., 39256., 17500., 21116., 7054.,
      8606.,  9182.,  10862., 19212., 22700., 10286., 12094., 21420., 25164.,
      11390., 13326., 23628., 27628., 12494., 14558., 14428., 18044., 19708.,
      23580., 41112., 49112., 21916., 26044., 45528., 54040., 24124., 28508.,
      49944., 58968., 26332., 30972., 10446., 12510., 13598., 15790., 28044.,
      32556., 14702., 17022., 30252., 35020., 15806., 18254., 32460., 37484.,
      16910., 19486.};
  const std::array<int, 4> in_shape = {{1, 8, 8, 2}};
  const int multiplier = 4;
  const auto padding = sycldnn::PaddingMode::SAME;
  const DataType max_input_val = 2048.0;
  this->run_input_backprop_test(exp_out, in_shape, multiplier, padding,
                                max_input_val);
}
TYPED_TEST(InputBackpropWindow3Stride2, VALID1x8x8x2x4) {
  using DataType = typename TestFixture::DataType;
  const std::vector<DataType> exp_out = {
      30.,    174.,   110.,   382.,   300.,   972.,   446.,   846.,   972.,
      1900.,  782.,   1310.,  1374.,  2030.,  0.,     0.,     270.,   798.,
      350.,   1006.,  1548.,  2988.,  1454.,  2238.,  3756.,  5452.,  2558.,
      3470.,  3150.,  4190.,  0.,     0.,     780.,   2220.,  1708.,  3404.,
      5112.,  8760.,  3916.,  5868.,  9528.,  13688., 6124.,  8332.,  8076.,
      10540., 0.,     0.,     2814.,  3726.,  3662.,  4702.,  8172.,  10380.,
      4766.,  5934.,  10380., 12844., 5870.,  7166.,  7230.,  8654.,  0.,
      0.,     5868.,  8076.,  8332.,  10796., 18360., 23544., 10540., 13260.,
      22776., 28472., 12748., 15724., 16236., 19468., 0.,     0.,     5358.,
      6654.,  6974.,  8398.,  14796., 17772., 8078.,  9630.,  17004., 20236.,
      9182.,  10862., 11310., 13118., 0.,     0.,     10206., 11886., 11822.,
      13630., 25260., 29004., 13694., 15630., 29004., 33004., 15566., 17630.,
      17694., 19886., 0.,     0.,     0.,     0.,     0.,     0.,     0.,
      0.,     0.,     0.,     0.,     0.,     0.,     0.,     0.,     0.,
      0.,     0.};
  const std::array<int, 4> in_shape = {{1, 8, 8, 2}};
  const int multiplier = 4;
  const auto padding = sycldnn::PaddingMode::VALID;
  const DataType max_input_val = 2048.0;
  this->run_input_backprop_test(exp_out, in_shape, multiplier, padding,
                                max_input_val);
}
TYPED_TEST(InputBackpropWindow3Stride2, SAME1x8x8x4x1) {
  using DataType = typename TestFixture::DataType;
  const std::vector<DataType> exp_out = {
      1.,    4.,    9.,    16.,   5.,    12.,   21.,   32.,   14.,   32.,
      54.,   80.,   25.,   36.,   49.,   64.,   54.,   80.,   110.,  144.,
      45.,   60.,   77.,   96.,   94.,   128.,  166.,  208.,  65.,   84.,
      105.,  128.,  13.,   28.,   45.,   64.,   17.,   36.,   57.,   80.,
      86.,   128.,  174.,  224.,  85.,   108.,  133.,  160.,  222.,  272.,
      326.,  384.,  153.,  180.,  209.,  240.,  358.,  416.,  478.,  544.,
      221.,  252.,  285.,  320.,  42.,   88.,   138.,  192.,  114.,  168.,
      226.,  288.,  332.,  448.,  572.,  704.,  250.,  312.,  378.,  448.,
      604.,  736.,  876.,  1024., 386.,  456.,  530.,  608.,  876.,  1024.,
      1180., 1344., 522.,  600.,  682.,  768.,  221.,  252.,  285.,  320.,
      289.,  324.,  361.,  400.,  630.,  704.,  782.,  864.,  357.,  396.,
      437.,  480.,  766.,  848.,  934.,  1024., 425.,  468.,  513.,  560.,
      902.,  992.,  1086., 1184., 493.,  540.,  589.,  640.,  458.,  536.,
      618.,  704.,  658.,  744.,  834.,  928.,  1420., 1600., 1788., 1984.,
      794.,  888.,  986.,  1088., 1692., 1888., 2092., 2304., 930.,  1032.,
      1138., 1248., 1964., 2176., 2396., 2624., 1066., 1176., 1290., 1408.,
      429.,  476.,  525.,  576.,  561.,  612.,  665.,  720.,  1174., 1280.,
      1390., 1504., 629.,  684.,  741.,  800.,  1310., 1424., 1542., 1664.,
      697.,  756.,  817.,  880.,  1446., 1568., 1694., 1824., 765.,  828.,
      893.,  960.,  874.,  984.,  1098., 1216., 1202., 1320., 1442., 1568.,
      2508., 2752., 3004., 3264., 1338., 1464., 1594., 1728., 2780., 3040.,
      3308., 3584., 1474., 1608., 1746., 1888., 3052., 3328., 3612., 3904.,
      1610., 1752., 1898., 2048., 637.,  700.,  765.,  832.,  833.,  900.,
      969.,  1040., 1718., 1856., 1998., 2144., 901.,  972.,  1045., 1120.,
      1854., 2000., 2150., 2304., 969.,  1044., 1121., 1200., 1990., 2144.,
      2302., 2464., 1037., 1116., 1197., 1280.};
  const std::array<int, 4> in_shape = {{1, 8, 8, 4}};
  const int multiplier = 1;
  const auto padding = sycldnn::PaddingMode::SAME;
  const DataType max_input_val = 2048.0;
  this->run_input_backprop_test(exp_out, in_shape, multiplier, padding,
                                max_input_val);
}
TYPED_TEST(InputBackpropWindow3Stride2, VALID1x8x8x4x1) {
  using DataType = typename TestFixture::DataType;
  const std::vector<DataType> exp_out = {
      1.,    4.,    9.,    16.,   5.,    12.,   21.,   32.,   14.,   32.,
      54.,   80.,   25.,   36.,   49.,   64.,   54.,   80.,   110.,  144.,
      45.,   60.,   77.,   96.,   81.,   100.,  121.,  144.,  0.,    0.,
      0.,    0.,    13.,   28.,   45.,   64.,   17.,   36.,   57.,   80.,
      86.,   128.,  174.,  224.,  85.,   108.,  133.,  160.,  222.,  272.,
      326.,  384.,  153.,  180.,  209.,  240.,  189.,  220.,  253.,  288.,
      0.,    0.,    0.,    0.,    38.,   80.,   126.,  176.,  94.,   144.,
      198.,  256.,  292.,  400.,  516.,  640.,  230.,  288.,  350.,  416.,
      564.,  688.,  820.,  960.,  366.,  432.,  502.,  576.,  486.,  560.,
      638.,  720.,  0.,    0.,    0.,    0.,    169.,  196.,  225.,  256.,
      221.,  252.,  285.,  320.,  494.,  560.,  630.,  704.,  289.,  324.,
      361.,  400.,  630.,  704.,  782.,  864.,  357.,  396.,  437.,  480.,
      441.,  484.,  529.,  576.,  0.,    0.,    0.,    0.,    350.,  416.,
      486.,  560.,  502.,  576.,  654.,  736.,  1108., 1264., 1428., 1600.,
      638.,  720.,  806.,  896.,  1380., 1552., 1732., 1920., 774.,  864.,
      958.,  1056., 990.,  1088., 1190., 1296., 0.,    0.,    0.,    0.,
      325.,  364.,  405.,  448.,  425.,  468.,  513.,  560.,  902.,  992.,
      1086., 1184., 493.,  540.,  589.,  640.,  1038., 1136., 1238., 1344.,
      561.,  612.,  665.,  720.,  693.,  748.,  805.,  864.,  0.,    0.,
      0.,    0.,    625.,  676.,  729.,  784.,  725.,  780.,  837.,  896.,
      1550., 1664., 1782., 1904., 841.,  900.,  961.,  1024., 1782., 1904.,
      2030., 2160., 957.,  1020., 1085., 1152., 1089., 1156., 1225., 1296.,
      0.,    0.,    0.,    0.,    0.,    0.,    0.,    0.,    0.,    0.,
      0.,    0.,    0.,    0.,    0.,    0.,    0.,    0.,    0.,    0.,
      0.,    0.,    0.,    0.,    0.,    0.,    0.,    0.,    0.,    0.,
      0.,    0.,    0.,    0.,    0.,    0.};
  const std::array<int, 4> in_shape = {{1, 8, 8, 4}};
  const int multiplier = 1;
  const auto padding = sycldnn::PaddingMode::VALID;
  const DataType max_input_val = 2048.0;
  this->run_input_backprop_test(exp_out, in_shape, multiplier, padding,
                                max_input_val);
}
TYPED_TEST(InputBackpropWindow3Stride2, SAME1x8x8x4x2) {
  using DataType = typename TestFixture::DataType;
  const std::vector<DataType> exp_out = {
      5.,     25.,    61.,    113.,   29.,    81.,    149.,   233.,   82.,
      218.,   386.,   586.,   181.,   265.,   365.,   481.,   386.,   586.,
      818.,   1082.,  333.,   449.,   581.,   729.,   690.,   954.,   1250.,
      1578.,  485.,   633.,   797.,   977.,   77.,    193.,   325.,   473.,
      101.,   249.,   413.,   593.,   610.,   938.,   1298.,  1690.,  637.,
      817.,   1013.,  1225.,  1682.,  2074.,  2498.,  2954.,  1173.,  1385.,
      1613.,  1857.,  2754.,  3210.,  3698.,  4218.,  1709.,  1953.,  2213.,
      2489.,  250.,   610.,   1002.,  1426.,  810.,   1234.,  1690.,  2178.,
      2436.,  3348.,  4324.,  5364.,  1882.,  2370.,  2890.,  3442.,  4580.,
      5620.,  6724.,  7892.,  2954.,  3506.,  4090.,  4706.,  6724.,  7892.,
      9124.,  10420., 4026.,  4642.,  5290.,  5970.,  1709.,  1953.,  2213.,
      2489.,  2245.,  2521.,  2813.,  3121.,  4898.,  5482.,  6098.,  6746.,
      2781.,  3089.,  3413.,  3753.,  5970.,  6618.,  7298.,  8010.,  3317.,
      3657.,  4013.,  4385.,  7042.,  7754.,  8498.,  9274.,  3853.,  4225.,
      4613.,  5017.,  3514.,  4130.,  4778.,  5458.,  5098.,  5778.,  6490.,
      7234.,  11012., 12436., 13924., 15476., 6170.,  6914.,  7690.,  8498.,
      13156., 14708., 16324., 18004., 7242.,  8050.,  8890.,  9762.,  15300.,
      16980., 18724., 20532., 8314.,  9186.,  10090., 11026., 3341.,  3713.,
      4101.,  4505.,  4389.,  4793.,  5213.,  5649.,  9186.,  10026., 10898.,
      11802., 4925.,  5361.,  5813.,  6281.,  10258., 11162., 12098., 13066.,
      5461.,  5929.,  6413.,  6913.,  11330., 12298., 13298., 14330., 5997.,
      6497.,  7013.,  7545.,  6778.,  7650.,  8554.,  9490.,  9386.,  10322.,
      11290., 12290., 19588., 21524., 23524., 25588., 10458., 11458., 12490.,
      13554., 21732., 23796., 25924., 28116., 11530., 12594., 13690., 14818.,
      23876., 26068., 28324., 30644., 12602., 13730., 14890., 16082., 4973.,
      5473.,  5989.,  6521.,  6533.,  7065.,  7613.,  8177.,  13474., 14570.,
      15698., 16858., 7069.,  7633.,  8213.,  8809.,  14546., 15706., 16898.,
      18122., 7605.,  8201.,  8813.,  9441.,  15618., 16842., 18098., 19386.,
      8141.,  8769.,  9413.,  10073.};
  const std::array<int, 4> in_shape = {{1, 8, 8, 4}};
  const int multiplier = 2;
  const auto padding = sycldnn::PaddingMode::SAME;
  const DataType max_input_val = 2048.0;
  this->run_input_backprop_test(exp_out, in_shape, multiplier, padding,
                                max_input_val);
}
TYPED_TEST(InputBackpropWindow3Stride2, VALID1x8x8x4x2) {
  using DataType = typename TestFixture::DataType;
  const std::vector<DataType> exp_out = {
      5.,     25.,    61.,    113.,   29.,    81.,    149.,  233.,  82.,
      218.,   386.,   586.,   181.,   265.,   365.,   481.,  386.,  586.,
      818.,   1082.,  333.,   449.,   581.,   729.,   613.,  761.,  925.,
      1105.,  0.,     0.,     0.,     0.,     77.,    193.,  325.,  473.,
      101.,   249.,   413.,   593.,   610.,   938.,   1298., 1690., 637.,
      817.,   1013.,  1225.,  1682.,  2074.,  2498.,  2954., 1173., 1385.,
      1613.,  1857.,  1453.,  1697.,  1957.,  2233.,  0.,    0.,    0.,
      0.,     226.,   554.,   914.,   1306.,  658.,   1050., 1474., 1930.,
      2132.,  2980.,  3892.,  4868.,  1730.,  2186.,  2674., 3194., 4276.,
      5252.,  6292.,  7396.,  2802.,  3322.,  3874.,  4458., 3746., 4330.,
      4946.,  5594.,  0.,     0.,     0.,     0.,     1301., 1513., 1741.,
      1985.,  1709.,  1953.,  2213.,  2489.,  3826.,  4346., 4898., 5482.,
      2245.,  2521.,  2813.,  3121.,  4898.,  5482.,  6098., 6746., 2781.,
      3089.,  3413.,  3753.,  3445.,  3785.,  4141.,  4513., 0.,    0.,
      0.,     0.,     2674.,  3194.,  3746.,  4330.,  3874., 4458., 5074.,
      5722.,  8564.,  9796.,  11092., 12452., 4946.,  5594., 6274., 6986.,
      10708., 12068., 13492., 14980., 6018.,  6730.,  7474., 8250., 7730.,
      8506.,  9314.,  10154., 0.,     0.,     0.,     0.,    2525., 2833.,
      3157.,  3497.,  3317.,  3657.,  4013.,  4385.,  7042., 7754., 8498.,
      9274.,  3853.,  4225.,  4613.,  5017.,  8114.,  8890., 9698., 10538.,
      4389.,  4793.,  5213.,  5649.,  5437.,  5873.,  6325., 6793., 0.,
      0.,     0.,     0.,     4901.,  5305.,  5725.,  6161., 5693., 6129.,
      6581.,  7049.,  12178., 13082., 14018., 14986., 6613., 7081., 7565.,
      8065.,  14018., 14986., 15986., 17018., 7533.,  8033., 8549., 9081.,
      8581.,  9113.,  9661.,  10225., 0.,     0.,     0.,    0.,    0.,
      0.,     0.,     0.,     0.,     0.,     0.,     0.,    0.,    0.,
      0.,     0.,     0.,     0.,     0.,     0.,     0.,    0.,    0.,
      0.,     0.,     0.,     0.,     0.,     0.,     0.,    0.,    0.,
      0.,     0.,     0.,     0.};
  const std::array<int, 4> in_shape = {{1, 8, 8, 4}};
  const int multiplier = 2;
  const auto padding = sycldnn::PaddingMode::VALID;
  const DataType max_input_val = 2048.0;
  this->run_input_backprop_test(exp_out, in_shape, multiplier, padding,
                                max_input_val);
}
TYPED_TEST(InputBackpropWindow3Stride2, SAME1x8x8x4x4) {
  using DataType = typename TestFixture::DataType;
  const std::vector<DataType> exp_out = {
      30.,     174.,    446.,    846.,    190.,   590.,    1118.,   1774.,
      540.,    1596.,   2908.,   4476.,   1374.,  2030.,   2814.,   3726.,
      2908.,   4476.,   6300.,   8380.,   2558.,  3470.,   4510.,   5678.,
      5276.,   7356.,   9692.,   12284.,  3742.,  4910.,   6206.,   7630.,
      510.,    1422.,   2462.,   3630.,   670.,   1838.,   3134.,   4558.,
      4572.,   7164.,   10012.,  13116.,  4926.,  6350.,   7902.,   9582.,
      13084.,  16188.,  19548.,  23164.,  9182.,  10862.,  12670.,  14606.,
      21596.,  25212.,  29084.,  33212.,  13438., 15374.,  17438.,  19630.,
      1660.,   4508.,   7612.,   10972.,  6076.,  9436.,   13052.,  16924.,
      18616.,  25848.,  33592.,  41848.,  14588., 18460.,  22588.,  26972.,
      35640.,  43896.,  52664.,  61944.,  23100., 27484.,  32124.,  37020.,
      52664.,  61944.,  71736.,  82040.,  31612., 36508.,  41660.,  47068.,
      13438.,  15374.,  17438.,  19630.,  17694., 19886.,  22206.,  24654.,
      38620.,  43260.,  48156.,  53308.,  21950., 24398.,  26974.,  29678.,
      47132.,  52284.,  57692.,  63356.,  26206., 28910.,  31742.,  34702.,
      55644.,  61308.,  67228.,  73404.,  30462., 33422.,  36510.,  39726.,
      27516.,  32412.,  37564.,  42972.,  40124., 45532.,  51196.,  57116.,
      86712.,  98040.,  109880., 122232., 48636., 54556.,  60732.,  67164.,
      103736., 116088., 128952., 142328., 57148., 63580.,  70268.,  77212.,
      120760., 134136., 148024., 162424., 65660., 72604.,  79804.,  87260.,
      26366.,  29326.,  32414.,  35630.,  34718., 37934.,  41278.,  44750.,
      72668.,  79356.,  86300.,  93500.,  38974., 42446.,  46046.,  49774.,
      81180.,  88380.,  95836.,  103548., 43230., 46958.,  50814.,  54798.,
      89692.,  97404.,  105372., 113596., 47486., 51470.,  55582.,  59822.,
      53372.,  60316.,  67516.,  74972.,  74172., 81628.,  89340.,  97308.,
      154808., 170232., 186168., 202616., 82684., 90652.,  98876.,  107356.,
      171832., 188280., 205240., 222712., 91196., 99676.,  108412., 117404.,
      188856., 206328., 224312., 242808., 99708., 108700., 117948., 127452.,
      39294.,  43278.,  47390.,  51630.,  51742., 55982.,  60350.,  64846.,
      106716., 115452., 124444., 133692., 55998., 60494.,  65118.,  69870.,
      115228., 124476., 133980., 143740., 60254., 65006.,  69886.,  74894.,
      123740., 133500., 143516., 153788., 64510., 69518.,  74654.,  79918.};
  const std::array<int, 4> in_shape = {{1, 8, 8, 4}};
  const int multiplier = 4;
  const auto padding = sycldnn::PaddingMode::SAME;
  const DataType max_input_val = 2048.0;
  this->run_input_backprop_test(exp_out, in_shape, multiplier, padding,
                                max_input_val);
}
TYPED_TEST(InputBackpropWindow3Stride2, VALID1x8x8x4x4) {
  using DataType = typename TestFixture::DataType;
  const std::vector<DataType> exp_out = {
      30.,     174.,    446.,    846.,    190.,   590.,   1118.,  1774.,
      540.,    1596.,   2908.,   4476.,   1374.,  2030.,  2814.,  3726.,
      2908.,   4476.,   6300.,   8380.,   2558.,  3470.,  4510.,  5678.,
      4766.,   5934.,   7230.,   8654.,   0.,     0.,     0.,     0.,
      510.,    1422.,   2462.,   3630.,   670.,   1838.,  3134.,  4558.,
      4572.,   7164.,   10012.,  13116.,  4926.,  6350.,  7902.,  9582.,
      13084.,  16188.,  19548.,  23164.,  9182.,  10862., 12670., 14606.,
      11390.,  13326.,  15390.,  17582.,  0.,     0.,     0.,     0.,
      1500.,   4092.,   6940.,   10044.,  4892.,  7996.,  11356., 14972.,
      16248.,  22968.,  30200.,  37944.,  13404., 17020., 20892., 25020.,
      33272.,  41016.,  49272.,  58040.,  21916., 26044., 30428., 35068.,
      29404.,  34044.,  38940.,  44092.,  0.,     0.,     0.,     0.,
      10206.,  11886.,  13694.,  15630.,  13438., 15374., 17438., 19630.,
      30108.,  34236.,  38620.,  43260.,  17694., 19886., 22206., 24654.,
      38620.,  43260.,  48156.,  53308.,  21950., 24398., 26974., 29678.,
      27230.,  29934.,  32766.,  35726.,  0.,     0.,     0.,     0.,
      20892.,  25020.,  29404.,  34044.,  30428., 35068., 39964., 45116.,
      67320.,  77112.,  87416.,  98232.,  38940., 44092., 49500., 55164.,
      84344.,  95160.,  106488., 118328., 47452., 53116., 59036., 65212.,
      61084.,  67260.,  73692.,  80380.,  0.,     0.,     0.,     0.,
      19902.,  22350.,  24926.,  27630.,  26206., 28910., 31742., 34702.,
      55644.,  61308.,  67228.,  73404.,  30462., 33422., 36510., 39726.,
      64156.,  70332.,  76764.,  83452.,  34718., 37934., 41278., 44750.,
      43070.,  46542.,  50142.,  53870.,  0.,     0.,     0.,     0.,
      38814.,  42030.,  45374.,  48846.,  45118., 48590., 52190., 55918.,
      96540.,  103740., 111196., 118908., 52446., 56174., 60030., 64014.,
      111196., 118908., 126876., 135100., 59774., 63758., 67870., 72110.,
      68126.,  72366.,  76734.,  81230.,  0.,     0.,     0.,     0.,
      0.,      0.,      0.,      0.,      0.,     0.,     0.,     0.,
      0.,      0.,      0.,      0.,      0.,     0.,     0.,     0.,
      0.,      0.,      0.,      0.,      0.,     0.,     0.,     0.,
      0.,      0.,      0.,      0.,      0.,     0.,     0.,     0.};
  const std::array<int, 4> in_shape = {{1, 8, 8, 4}};
  const int multiplier = 4;
  const auto padding = sycldnn::PaddingMode::VALID;
  const DataType max_input_val = 2048.0;
  this->run_input_backprop_test(exp_out, in_shape, multiplier, padding,
                                max_input_val);
}
TYPED_TEST(InputBackpropWindow3Stride2, SAME3x5x5x1x1) {
  using DataType = typename TestFixture::DataType;
  const std::vector<DataType> exp_out = {
      5.,   14.,  10.,  24.,  15.,  16.,  40.,  26.,  60.,  36.,  20.,
      44.,  25.,  54.,  30.,  46.,  100., 56.,  120., 66.,  35.,  74.,
      40.,  84.,  45.,  50.,  104., 55.,  114., 60.,  106., 220., 116.,
      240., 126., 65.,  134., 70.,  144., 75.,  136., 280., 146., 300.,
      156., 80.,  164., 85.,  174., 90.,  95.,  194., 100., 204., 105.,
      196., 400., 206., 420., 216., 110., 224., 115., 234., 120., 226.,
      460., 236., 480., 246., 125., 254., 130., 264., 135.};
  const std::array<int, 4> in_shape = {{3, 5, 5, 1}};
  const int multiplier = 1;
  const auto padding = sycldnn::PaddingMode::SAME;
  const DataType max_input_val = 2048.0;
  this->run_input_backprop_test(exp_out, in_shape, multiplier, padding,
                                max_input_val);
}
TYPED_TEST(InputBackpropWindow3Stride2, VALID3x5x5x1x1) {
  using DataType = typename TestFixture::DataType;
  const std::vector<DataType> exp_out = {
      1.,  2.,  5.,   4.,  6.,  4.,  5.,  14.,  10.,  12., 10.,  14.,  36.,
      24., 30., 12.,  15., 34., 20., 24., 21.,  24.,  55., 32.,  36.,  5.,
      10., 21., 12.,  18., 20., 25., 54., 30.,  36.,  42., 54.,  116., 64.,
      78., 28., 35.,  74., 40., 48., 49., 56.,  119., 64., 72.,  9.,   18.,
      37., 20., 30.,  36., 45., 94., 50., 60.,  74.,  94., 196., 104., 126.,
      44., 55., 114., 60., 72., 77., 88., 183., 96.,  108.};
  const std::array<int, 4> in_shape = {{3, 5, 5, 1}};
  const int multiplier = 1;
  const auto padding = sycldnn::PaddingMode::VALID;
  const DataType max_input_val = 2048.0;
  this->run_input_backprop_test(exp_out, in_shape, multiplier, padding,
                                max_input_val);
}
TYPED_TEST(InputBackpropWindow3Stride2, SAME3x5x5x1x2) {
  using DataType = typename TestFixture::DataType;
  const std::vector<DataType> exp_out = {
      29.,   88.,   67.,   164.,  105.,  100.,  260.,  176.,  412.,  252.,
      143.,  316.,  181.,  392.,  219.,  328.,  716.,  404.,  868.,  480.,
      257.,  544.,  295.,  620.,  333.,  371.,  772.,  409.,  848.,  447.,
      784.,  1628., 860.,  1780., 936.,  485.,  1000., 523.,  1076., 561.,
      1012., 2084., 1088., 2236., 1164., 599.,  1228., 637.,  1304., 675.,
      713.,  1456., 751.,  1532., 789.,  1468., 2996., 1544., 3148., 1620.,
      827.,  1684., 865.,  1760., 903.,  1696., 3452., 1772., 3604., 1848.,
      941.,  1912., 979.,  1988., 1017.};
  const std::array<int, 4> in_shape = {{3, 5, 5, 1}};
  const int multiplier = 2;
  const auto padding = sycldnn::PaddingMode::SAME;
  const DataType max_input_val = 2048.0;
  this->run_input_backprop_test(exp_out, in_shape, multiplier, padding,
                                max_input_val);
}
TYPED_TEST(InputBackpropWindow3Stride2, VALID3x5x5x1x2) {
  using DataType = typename TestFixture::DataType;
  const std::vector<DataType> exp_out = {
      5.,   11.,  28.,  25.,  39.,  23.,  29.,   88.,   67.,  81.,  58.,
      86.,  232., 162., 206., 83.,  105., 240.,  143.,  173., 149., 171.,
      396., 233., 263., 29.,  67.,  140., 81.,   127.,  143., 181., 392.,
      219., 265., 298., 390., 840., 466., 574.,  203.,  257., 544., 295.,
      357., 365., 419., 892., 481., 543., 53.,   123.,  252., 137., 215.,
      263., 333., 696., 371., 449., 538., 694.,  1448., 770., 942., 323.,
      409., 848., 447., 541., 581., 667., 1388., 729.,  823.};
  const std::array<int, 4> in_shape = {{3, 5, 5, 1}};
  const int multiplier = 2;
  const auto padding = sycldnn::PaddingMode::VALID;
  const DataType max_input_val = 2048.0;
  this->run_input_backprop_test(exp_out, in_shape, multiplier, padding,
                                max_input_val);
}
TYPED_TEST(InputBackpropWindow3Stride2, SAME3x5x5x1x4) {
  using DataType = typename TestFixture::DataType;
  const std::vector<DataType> exp_out = {
      190.,   612.,   486.,   1204.,  782.,   692.,   1848.,  1284.,  3032.,
      1876.,  1078.,  2388.,  1374.,  2980.,  1670.,  2468.,  5400.,  3060.,
      6584.,  3652.,  1966.,  4164.,  2262.,  4756.,  2558.,  2854.,  5940.,
      3150.,  6532.,  3446.,  6020.,  12504., 6612.,  13688., 7204.,  3742.,
      7716.,  4038.,  8308.,  4334.,  7796.,  16056., 8388.,  17240., 8980.,
      4630.,  9492.,  4926.,  10084., 5222.,  5518.,  11268., 5814.,  11860.,
      6110.,  11348., 23160., 11940., 24344., 12532., 6406.,  13044., 6702.,
      13636., 6998.,  13124., 26712., 13716., 27896., 14308., 7294.,  14820.,
      7590.,  15412., 7886.};
  const std::array<int, 4> in_shape = {{3, 5, 5, 1}};
  const int multiplier = 4;
  const auto padding = sycldnn::PaddingMode::SAME;
  const DataType max_input_val = 2048.0;
  this->run_input_backprop_test(exp_out, in_shape, multiplier, padding,
                                max_input_val);
}
TYPED_TEST(InputBackpropWindow3Stride2, VALID3x5x5x1x4) {
  using DataType = typename TestFixture::DataType;
  const std::vector<DataType> exp_out = {
      30.,   70.,   180.,   174.,  278.,  150.,  190.,  612.,  486.,  590.,
      380.,  588.,  1640.,  1180., 1516., 614.,  782.,  1796., 1078., 1310.,
      1118., 1286., 2996.,  1774., 2006., 190.,  486.,  1012., 590.,  950.,
      1078., 1374., 2980.,  1670., 2030., 2236., 2956., 6376., 3548., 4396.,
      1542., 1966., 4164.,  2262., 2750., 2814., 3238., 6900., 3726., 4214.,
      350.,  902.,  1844.,  1006., 1622., 2006., 2558., 5348., 2854., 3470.,
      4092., 5324., 11112., 5916., 7276., 2470., 3150., 6532., 3446., 4190.,
      4510., 5190., 10804., 5678., 6422.};
  const std::array<int, 4> in_shape = {{3, 5, 5, 1}};
  const int multiplier = 4;
  const auto padding = sycldnn::PaddingMode::VALID;
  const DataType max_input_val = 2048.0;
  this->run_input_backprop_test(exp_out, in_shape, multiplier, padding,
                                max_input_val);
}
TYPED_TEST(InputBackpropWindow3Stride2, SAME3x5x5x2x1) {
  using DataType = typename TestFixture::DataType;
  const std::vector<DataType> exp_out = {
      9.,   20.,  32.,   56.,   27.,  40.,  68.,   96.,   45.,  60.,
      36.,  64.,  100.,  160.,  72.,  104., 172.,  240.,  108., 144.,
      63.,  80.,  140.,  176.,  81.,  100., 176.,  216.,  99.,  120.,
      144., 184., 316.,  400.,  180., 224., 388.,  480.,  216., 264.,
      117., 140., 248.,  296.,  135., 160., 284.,  336.,  153., 180.,
      171., 200., 356.,  416.,  189., 220., 392.,  456.,  207., 240.,
      360., 424., 748.,  880.,  396., 464., 820.,  960.,  432., 504.,
      225., 260., 464.,  536.,  243., 280., 500.,  576.,  261., 300.,
      468., 544., 964.,  1120., 504., 584., 1036., 1200., 540., 624.,
      279., 320., 572.,  656.,  297., 340., 608.,  696.,  315., 360.,
      333., 380., 680.,  776.,  351., 400., 716.,  816.,  369., 420.,
      684., 784., 1396., 1600., 720., 824., 1468., 1680., 756., 864.,
      387., 440., 788.,  896.,  405., 460., 824.,  936.,  423., 480.,
      792., 904., 1612., 1840., 828., 944., 1684., 1920., 864., 984.,
      441., 500., 896.,  1016., 459., 520., 932.,  1056., 477., 540.};
  const std::array<int, 4> in_shape = {{3, 5, 5, 2}};
  const int multiplier = 1;
  const auto padding = sycldnn::PaddingMode::SAME;
  const DataType max_input_val = 2048.0;
  this->run_input_backprop_test(exp_out, in_shape, multiplier, padding,
                                max_input_val);
}
TYPED_TEST(InputBackpropWindow3Stride2, VALID3x5x5x2x1) {
  using DataType = typename TestFixture::DataType;
  const std::vector<DataType> exp_out = {
      1.,   4.,   3.,   8.,   8.,   20.,  9.,   16.,  15.,  24.,  7.,   16.,
      9.,   20.,  32.,  56.,  27.,  40.,  33.,  48.,  18.,  40.,  30.,  56.,
      88.,  144., 66.,  96.,  86.,  120., 35.,  48.,  45.,  60.,  104., 136.,
      63.,  80.,  77.,  96.,  65.,  84.,  75.,  96.,  176., 220., 105., 128.,
      119., 144., 9.,   20.,  27.,  40.,  56.,  84.,  33.,  48.,  55.,  72.,
      63.,  80.,  81.,  100., 176., 216., 99.,  120., 121., 144., 130., 168.,
      174., 216., 376., 464., 210., 256., 262., 312., 91.,  112., 117., 140.,
      248., 296., 135., 160., 165., 192., 169., 196., 195., 224., 416., 476.,
      225., 256., 255., 288., 17.,  36.,  51.,  72.,  104., 148., 57.,  80.,
      95.,  120., 119., 144., 153., 180., 320., 376., 171., 200., 209., 240.,
      242., 296., 318., 376., 664., 784., 354., 416., 438., 504., 147., 176.,
      189., 220., 392., 456., 207., 240., 253., 288., 273., 308., 315., 352.,
      656., 732., 345., 384., 391., 432.};
  const std::array<int, 4> in_shape = {{3, 5, 5, 2}};
  const int multiplier = 1;
  const auto padding = sycldnn::PaddingMode::VALID;
  const DataType max_input_val = 2048.0;
  this->run_input_backprop_test(exp_out, in_shape, multiplier, padding,
                                max_input_val);
}
TYPED_TEST(InputBackpropWindow3Stride2, SAME3x5x5x2x2) {
  using DataType = typename TestFixture::DataType;
  const std::vector<DataType> exp_out = {
      53.,   137.,  214.,   398.,   193.,  293.,  494.,   710.,   333.,  449.,
      238.,  454.,  692.,   1156.,  518.,  766.,  1252.,  1780.,  798.,  1078.,
      473.,  605.,  1054.,  1334.,  613.,  761.,  1334.,  1646.,  753.,  917.,
      1078., 1390., 2372.,  3028.,  1358., 1702., 2932.,  3652.,  1638., 2014.,
      893.,  1073., 1894.,  2270.,  1033., 1229., 2174.,  2582.,  1173., 1385.,
      1313., 1541., 2734.,  3206.,  1453., 1697., 3014.,  3518.,  1593., 1853.,
      2758., 3262., 5732.,  6772.,  3038., 3574., 6292.,  7396.,  3318., 3886.,
      1733., 2009., 3574.,  4142.,  1873., 2165., 3854.,  4454.,  2013., 2321.,
      3598., 4198., 7412.,  8644.,  3878., 4510., 7972.,  9268.,  4158., 4822.,
      2153., 2477., 4414.,  5078.,  2293., 2633., 4694.,  5390.,  2433., 2789.,
      2573., 2945., 5254.,  6014.,  2713., 3101., 5534.,  6326.,  2853., 3257.,
      5278., 6070., 10772., 12388., 5558., 6382., 11332., 13012., 5838., 6694.,
      2993., 3413., 6094.,  6950.,  3133., 3569., 6374.,  7262.,  3273., 3725.,
      6118., 7006., 12452., 14260., 6398., 7318., 13012., 14884., 6678., 7630.,
      3413., 3881., 6934.,  7886.,  3553., 4037., 7214.,  8198.,  3693., 4193.};
  const std::array<int, 4> in_shape = {{3, 5, 5, 2}};
  const int multiplier = 2;
  const auto padding = sycldnn::PaddingMode::SAME;
  const DataType max_input_val = 2048.0;
  this->run_input_backprop_test(exp_out, in_shape, multiplier, padding,
                                max_input_val);
}
TYPED_TEST(InputBackpropWindow3Stride2, VALID3x5x5x2x2) {
  using DataType = typename TestFixture::DataType;
  const std::vector<DataType> exp_out = {
      5.,    25.,   17.,   53.,   46.,   134.,  61.,   113.,  105.,  173.,
      41.,   109.,  53.,   137.,  214.,  398.,  193.,  293.,  237.,  353.,
      106.,  274.,  194.,  394.,  604.,  1036., 474.,  706.,  626.,  890.,
      257.,  357.,  333.,  449.,  774.,  1022., 473.,  605.,  581.,  729.,
      485.,  633.,  561.,  725.,  1326., 1670., 797.,  977.,  905.,  1101.,
      53.,   137.,  193.,  293.,  398.,  614.,  237.,  353.,  409.,  541.,
      473.,  605.,  613.,  761.,  1334., 1646., 753.,  917.,  925.,  1105.,
      970.,  1266., 1314., 1642., 2844., 3532., 1594., 1954., 2002., 2394.,
      689.,  853.,  893.,  1073., 1894., 2270., 1033., 1229., 1269., 1481.,
      1301., 1513., 1505., 1733., 3214., 3686., 1741., 1985., 1977., 2237.,
      101.,  249.,  369.,  533.,  750.,  1094., 413.,  593.,  713.,  909.,
      905.,  1101., 1173., 1385., 2454., 2894., 1313., 1541., 1613., 1857.,
      1834., 2258., 2434., 2890., 5084., 6028., 2714., 3202., 3378., 3898.,
      1121., 1349., 1453., 1697., 3014., 3518., 1593., 1853., 1957., 2233.,
      2117., 2393., 2449., 2741., 5102., 5702., 2685., 2993., 3049., 3373.};
  const std::array<int, 4> in_shape = {{3, 5, 5, 2}};
  const int multiplier = 2;
  const auto padding = sycldnn::PaddingMode::VALID;
  const DataType max_input_val = 2048.0;
  this->run_input_backprop_test(exp_out, in_shape, multiplier, padding,
                                max_input_val);
}
TYPED_TEST(InputBackpropWindow3Stride2, SAME3x5x5x2x4) {
  using DataType = typename TestFixture::DataType;
  const std::vector<DataType> exp_out = {
      350.,    1006.,   1548.,  2988.,  1454.,  2238.,   3756.,  5452.,
      2558.,   3470.,   1708.,  3404.,  5112.,  8760.,   3916.,  5868.,
      9528.,   13688.,  6124.,  8332.,  3662.,  4702.,   8172.,  10380.,
      4766.,   5934.,   10380., 12844., 5870.,  7166.,   8332.,  10796.,
      18360.,  23544.,  10540., 13260., 22776., 28472.,  12748., 15724.,
      6974.,   8398.,   14796., 17772., 8078.,  9630.,   17004., 20236.,
      9182.,   10862.,  10286., 12094., 21420., 25164.,  11390., 13326.,
      23628.,  27628.,  12494., 14558., 21580., 25580.,  44856., 53112.,
      23788.,  28044.,  49272., 58040., 25996., 30508.,  13598., 15790.,
      28044.,  32556.,  14702., 17022., 30252., 35020.,  15806., 18254.,
      28204.,  32972.,  58104., 67896., 30412., 35436.,  62520., 72824.,
      32620.,  37900.,  16910., 19486., 34668., 39948.,  18014., 20718.,
      36876.,  42412.,  19118., 21950., 20222., 23182.,  41292., 47340.,
      21326.,  24414.,  43500., 49804., 22430., 25646.,  41452., 47756.,
      84600.,  97464.,  43660., 50220., 89016., 102392., 45868., 52684.,
      23534.,  26878.,  47916., 54732., 24638., 28110.,  50124., 57196.,
      25742.,  29342.,  48076., 55148., 97848., 112248., 50284., 57612.,
      102264., 117176., 52492., 60076., 26846., 30574.,  54540., 62124.,
      27950.,  31806.,  56748., 64588., 29054., 33038.};
  const std::array<int, 4> in_shape = {{3, 5, 5, 2}};
  const int multiplier = 4;
  const auto padding = sycldnn::PaddingMode::SAME;
  const DataType max_input_val = 2048.0;
  this->run_input_backprop_test(exp_out, in_shape, multiplier, padding,
                                max_input_val);
}
TYPED_TEST(InputBackpropWindow3Stride2, VALID3x5x5x2x4) {
  using DataType = typename TestFixture::DataType;
  const std::vector<DataType> exp_out = {
      30.,    174.,   110.,   382.,   300.,   972.,   446.,   846.,   782.,
      1310.,  270.,   798.,   350.,   1006.,  1548.,  2988.,  1454.,  2238.,
      1790.,  2702.,  700.,   2012.,  1372.,  2940.,  4440.,  7832.,  3580.,
      5404.,  4764.,  6844.,  1966.,  2750.,  2558.,  3470.,  5964.,  7916.,
      3662.,  4702.,  4510.,  5678.,  3742.,  4910.,  4334.,  5630.,  10284.,
      13004., 6206.,  7630.,  7054.,  8606.,  350.,   1006.,  1454.,  2238.,
      2988.,  4684.,  1790.,  2702.,  3150.,  4190.,  3662.,  4702.,  4766.,
      5934.,  10380., 12844., 5870.,  7166.,  7230.,  8654.,  7484.,  9820.,
      10204., 12796., 22104., 27544., 12412., 15260., 15644., 18748., 5358.,
      6654.,  6974.,  8398.,  14796., 17772., 8078.,  9630.,  9950.,  11630.,
      10206., 11886., 11822., 13630., 25260., 29004., 13694., 15630., 15566.,
      17630., 670.,   1838.,  2798.,  4094.,  5676.,  8396.,  3134.,  4558.,
      5518.,  7070.,  7054.,  8606.,  9182.,  10862., 19212., 22700., 10286.,
      12094., 12670., 14606., 14268., 17628., 19036., 22652., 39768., 47256.,
      21244., 25116., 26524., 30652., 8750.,  10558., 11390., 13326., 23628.,
      27628., 12494., 14558., 15390., 17582., 16670., 18862., 19310., 21630.,
      40236., 45004., 21182., 23630., 24078., 26654.};
  const std::array<int, 4> in_shape = {{3, 5, 5, 2}};
  const int multiplier = 4;
  const auto padding = sycldnn::PaddingMode::VALID;
  const DataType max_input_val = 2048.0;
  this->run_input_backprop_test(exp_out, in_shape, multiplier, padding,
                                max_input_val);
}
TYPED_TEST(InputBackpropWindow3Stride2, SAME3x5x5x4x1) {
  using DataType = typename TestFixture::DataType;
  const std::vector<DataType> exp_out = {
      17.,   36.,   57.,   80.,   86.,   128.,  174.,  224.,  85.,   108.,
      133.,  160.,  222.,  272.,  326.,  384.,  153.,  180.,  209.,  240.,
      94.,   144.,  198.,  256.,  292.,  400.,  516.,  640.,  230.,  288.,
      350.,  416.,  564.,  688.,  820.,  960.,  366.,  432.,  502.,  576.,
      221.,  252.,  285.,  320.,  494.,  560.,  630.,  704.,  289.,  324.,
      361.,  400.,  630.,  704.,  782.,  864.,  357.,  396.,  437.,  480.,
      502.,  576.,  654.,  736.,  1108., 1264., 1428., 1600., 638.,  720.,
      806.,  896.,  1380., 1552., 1732., 1920., 774.,  864.,  958.,  1056.,
      425.,  468.,  513.,  560.,  902.,  992.,  1086., 1184., 493.,  540.,
      589.,  640.,  1038., 1136., 1238., 1344., 561.,  612.,  665.,  720.,
      629.,  684.,  741.,  800.,  1310., 1424., 1542., 1664., 697.,  756.,
      817.,  880.,  1446., 1568., 1694., 1824., 765.,  828.,  893.,  960.,
      1318., 1440., 1566., 1696., 2740., 2992., 3252., 3520., 1454., 1584.,
      1718., 1856., 3012., 3280., 3556., 3840., 1590., 1728., 1870., 2016.,
      833.,  900.,  969.,  1040., 1718., 1856., 1998., 2144., 901.,  972.,
      1045., 1120., 1854., 2000., 2150., 2304., 969.,  1044., 1121., 1200.,
      1726., 1872., 2022., 2176., 3556., 3856., 4164., 4480., 1862., 2016.,
      2174., 2336., 3828., 4144., 4468., 4800., 1998., 2160., 2326., 2496.,
      1037., 1116., 1197., 1280., 2126., 2288., 2454., 2624., 1105., 1188.,
      1273., 1360., 2262., 2432., 2606., 2784., 1173., 1260., 1349., 1440.,
      1241., 1332., 1425., 1520., 2534., 2720., 2910., 3104., 1309., 1404.,
      1501., 1600., 2670., 2864., 3062., 3264., 1377., 1476., 1577., 1680.,
      2542., 2736., 2934., 3136., 5188., 5584., 5988., 6400., 2678., 2880.,
      3086., 3296., 5460., 5872., 6292., 6720., 2814., 3024., 3238., 3456.,
      1445., 1548., 1653., 1760., 2942., 3152., 3366., 3584., 1513., 1620.,
      1729., 1840., 3078., 3296., 3518., 3744., 1581., 1692., 1805., 1920.,
      2950., 3168., 3390., 3616., 6004., 6448., 6900., 7360., 3086., 3312.,
      3542., 3776., 6276., 6736., 7204., 7680., 3222., 3456., 3694., 3936.,
      1649., 1764., 1881., 2000., 3350., 3584., 3822., 4064., 1717., 1836.,
      1957., 2080., 3486., 3728., 3974., 4224., 1785., 1908., 2033., 2160.};
  const std::array<int, 4> in_shape = {{3, 5, 5, 4}};
  const int multiplier = 1;
  const auto padding = sycldnn::PaddingMode::SAME;
  const DataType max_input_val = 2048.0;
  this->run_input_backprop_test(exp_out, in_shape, multiplier, padding,
                                max_input_val);
}
TYPED_TEST(InputBackpropWindow3Stride2, VALID3x5x5x4x1) {
  using DataType = typename TestFixture::DataType;
  const std::vector<DataType> exp_out = {
      1.,    4.,    9.,    16.,   5.,    12.,   21.,   32.,   14.,   32.,
      54.,   80.,   25.,   36.,   49.,   64.,   45.,   60.,   77.,   96.,
      13.,   28.,   45.,   64.,   17.,   36.,   57.,   80.,   86.,   128.,
      174.,  224.,  85.,   108.,  133.,  160.,  105.,  132.,  161.,  192.,
      34.,   72.,   114.,  160.,  74.,   120.,  170.,  224.,  252.,  352.,
      460.,  576.,  210.,  264.,  322.,  384.,  282.,  344.,  410.,  480.,
      117.,  140.,  165.,  192.,  153.,  180.,  209.,  240.,  358.,  416.,
      478.,  544.,  221.,  252.,  285.,  320.,  273.,  308.,  345.,  384.,
      225.,  260.,  297.,  336.,  261.,  300.,  341.,  384.,  622.,  704.,
      790.,  880.,  377.,  420.,  465.,  512.,  429.,  476.,  525.,  576.,
      17.,   36.,   57.,   80.,   85.,   108.,  133.,  160.,  174.,  224.,
      278.,  336.,  105.,  132.,  161.,  192.,  189.,  220.,  253.,  288.,
      221.,  252.,  285.,  320.,  289.,  324.,  361.,  400.,  630.,  704.,
      782.,  864.,  357.,  396.,  437.,  480.,  441.,  484.,  529.,  576.,
      450.,  520.,  594.,  672.,  618.,  696.,  778.,  864.,  1340., 1504.,
      1676., 1856., 754.,  840.,  930.,  1024., 954.,  1048., 1146., 1248.,
      325.,  364.,  405.,  448.,  425.,  468.,  513.,  560.,  902.,  992.,
      1086., 1184., 493.,  540.,  589.,  640.,  609.,  660.,  713.,  768.,
      625.,  676.,  729.,  784.,  725.,  780.,  837.,  896.,  1550., 1664.,
      1782., 1904., 841.,  900.,  961.,  1024., 957.,  1020., 1085., 1152.,
      33.,   68.,   105.,  144.,  165.,  204.,  245.,  288.,  334.,  416.,
      502.,  592.,  185.,  228.,  273.,  320.,  333.,  380.,  429.,  480.,
      429.,  476.,  525.,  576.,  561.,  612.,  665.,  720.,  1174., 1280.,
      1390., 1504., 629.,  684.,  741.,  800.,  777.,  836.,  897.,  960.,
      866.,  968.,  1074., 1184., 1162., 1272., 1386., 1504., 2428., 2656.,
      2892., 3136., 1298., 1416., 1538., 1664., 1626., 1752., 1882., 2016.,
      533.,  588.,  645.,  704.,  697.,  756.,  817.,  880.,  1446., 1568.,
      1694., 1824., 765.,  828.,  893.,  960.,  945.,  1012., 1081., 1152.,
      1025., 1092., 1161., 1232., 1189., 1260., 1333., 1408., 2478., 2624.,
      2774., 2928., 1305., 1380., 1457., 1536., 1485., 1564., 1645., 1728.};
  const std::array<int, 4> in_shape = {{3, 5, 5, 4}};
  const int multiplier = 1;
  const auto padding = sycldnn::PaddingMode::VALID;
  const DataType max_input_val = 2048.0;
  this->run_input_backprop_test(exp_out, in_shape, multiplier, padding,
                                max_input_val);
}
TYPED_TEST(InputBackpropWindow3Stride2, SAME3x5x5x4x2) {
  using DataType = typename TestFixture::DataType;
  const std::vector<DataType> exp_out = {
      101.,   249.,   413.,   593.,   610.,   938.,   1298.,  1690.,  637.,
      817.,   1013.,  1225.,  1682.,  2074.,  2498.,  2954.,  1173.,  1385.,
      1613.,  1857.,  658.,   1050.,  1474.,  1930.,  2132.,  2980.,  3892.,
      4868.,  1730.,  2186.,  2674.,  3194.,  4276.,  5252.,  6292.,  7396.,
      2802.,  3322.,  3874.,  4458.,  1709.,  1953.,  2213.,  2489.,  3826.,
      4346.,  4898.,  5482.,  2245.,  2521.,  2813.,  3121.,  4898.,  5482.,
      6098.,  6746.,  2781.,  3089.,  3413.,  3753.,  3874.,  4458.,  5074.,
      5722.,  8564.,  9796.,  11092., 12452., 4946.,  5594.,  6274.,  6986.,
      10708., 12068., 13492., 14980., 6018.,  6730.,  7474.,  8250.,  3317.,
      3657.,  4013.,  4385.,  7042.,  7754.,  8498.,  9274.,  3853.,  4225.,
      4613.,  5017.,  8114.,  8890.,  9698.,  10538., 4389.,  4793.,  5213.,
      5649.,  4925.,  5361.,  5813.,  6281.,  10258., 11162., 12098., 13066.,
      5461.,  5929.,  6413.,  6913.,  11330., 12298., 13298., 14330., 5997.,
      6497.,  7013.,  7545.,  10306., 11274., 12274., 13306., 21428., 23428.,
      25492., 27620., 11378., 12410., 13474., 14570., 23572., 25700., 27892.,
      30148., 12450., 13546., 14674., 15834., 6533.,  7065.,  7613.,  8177.,
      13474., 14570., 15698., 16858., 7069.,  7633.,  8213.,  8809.,  14546.,
      15706., 16898., 18122., 7605.,  8201.,  8813.,  9441.,  13522., 14682.,
      15874., 17098., 27860., 30244., 32692., 35204., 14594., 15818., 17074.,
      18362., 30004., 32516., 35092., 37732., 15666., 16954., 18274., 19626.,
      8141.,  8769.,  9413.,  10073., 16690., 17978., 19298., 20650., 8677.,
      9337.,  10013., 10705., 17762., 19114., 20498., 21914., 9213.,  9905.,
      10613., 11337., 9749.,  10473., 11213., 11969., 19906., 21386., 22898.,
      24442., 10285., 11041., 11813., 12601., 20978., 22522., 24098., 25706.,
      10821., 11609., 12413., 13233., 19954., 21498., 23074., 24682., 40724.,
      43876., 47092., 50372., 21026., 22634., 24274., 25946., 42868., 46148.,
      49492., 52900., 22098., 23770., 25474., 27210., 11357., 12177., 13013.,
      13865., 23122., 24794., 26498., 28234., 11893., 12745., 13613., 14497.,
      24194., 25930., 27698., 29498., 12429., 13313., 14213., 15129., 23170.,
      24906., 26674., 28474., 47156., 50692., 54292., 57956., 24242., 26042.,
      27874., 29738., 49300., 52964., 56692., 60484., 25314., 27178., 29074.,
      31002., 12965., 13881., 14813., 15761., 26338., 28202., 30098., 32026.,
      13501., 14449., 15413., 16393., 27410., 29338., 31298., 33290., 14037.,
      15017., 16013., 17025.};
  const std::array<int, 4> in_shape = {{3, 5, 5, 4}};
  const int multiplier = 2;
  const auto padding = sycldnn::PaddingMode::SAME;
  const DataType max_input_val = 2048.0;
  this->run_input_backprop_test(exp_out, in_shape, multiplier, padding,
                                max_input_val);
}
TYPED_TEST(InputBackpropWindow3Stride2, VALID3x5x5x4x2) {
  using DataType = typename TestFixture::DataType;
  const std::vector<DataType> exp_out = {
      5.,     25.,    61.,    113.,   29.,    81.,    149.,   233.,   82.,
      218.,   386.,   586.,   181.,   265.,   365.,   481.,   333.,   449.,
      581.,   729.,   77.,    193.,   325.,   473.,   101.,   249.,   413.,
      593.,   610.,   938.,   1298.,  1690.,  637.,   817.,   1013.,  1225.,
      789.,   1001.,  1229.,  1473.,  202.,   498.,   826.,   1186.,  506.,
      866.,   1258.,  1682.,  1828.,  2612.,  3460.,  4372.,  1578.,  2002.,
      2458.,  2946.,  2138.,  2626.,  3146.,  3698.,  893.,   1073.,  1269.,
      1481.,  1173.,  1385.,  1613.,  1857.,  2754.,  3210.,  3698.,  4218.,
      1709.,  1953.,  2213.,  2489.,  2117.,  2393.,  2685.,  2993.,  1733.,
      2009.,  2301.,  2609.,  2013.,  2321.,  2645.,  2985.,  4818.,  5466.,
      6146.,  6858.,  2933.,  3273.,  3629.,  4001.,  3341.,  3713.,  4101.,
      4505.,  101.,   249.,   413.,   593.,   637.,   817.,   1013.,  1225.,
      1298.,  1690.,  2114.,  2570.,  789.,   1001.,  1229.,  1473.,  1453.,
      1697.,  1957.,  2233.,  1709.,  1953.,  2213.,  2489.,  2245.,  2521.,
      2813.,  3121.,  4898.,  5482.,  6098.,  6746.,  2781.,  3089.,  3413.,
      3753.,  3445.,  3785.,  4141.,  4513.,  3466.,  4018.,  4602.,  5218.,
      4794.,  5410.,  6058.,  6738.,  10404., 11700., 13060., 14484., 5866.,
      6546.,  7258.,  8002.,  7450.,  8194.,  8970.,  9778.,  2525.,  2833.,
      3157.,  3497.,  3317.,  3657.,  4013.,  4385.,  7042.,  7754.,  8498.,
      9274.,  3853.,  4225.,  4613.,  5017.,  4773.,  5177.,  5597.,  6033.,
      4901.,  5305.,  5725.,  6161.,  5693.,  6129.,  6581.,  7049.,  12178.,
      13082., 14018., 14986., 6613.,  7081.,  7565.,  8065.,  7533.,  8033.,
      8549.,  9081.,  197.,   473.,   765.,   1073.,  1245.,  1553.,  1877.,
      2217.,  2514.,  3162.,  3842.,  4554.,  1397.,  1737.,  2093.,  2465.,
      2573.,  2945.,  3333.,  3737.,  3341.,  3713.,  4101.,  4505.,  4389.,
      4793.,  5213.,  5649.,  9186.,  10026., 10898., 11802., 4925.,  5361.,
      5813.,  6281.,  6101.,  6569.,  7053.,  7553.,  6730.,  7538.,  8378.,
      9250.,  9082.,  9954.,  10858., 11794., 18980., 20788., 22660., 24596.,
      10154., 11090., 12058., 13058., 12762., 13762., 14794., 15858., 4157.,
      4593.,  5045.,  5513.,  5461.,  5929.,  6413.,  6913.,  11330., 12298.,
      13298., 14330., 5997.,  6497.,  7013.,  7545.,  7429.,  7961.,  8509.,
      9073.,  8069.,  8601.,  9149.,  9713.,  9373.,  9937.,  10517., 11113.,
      19538., 20698., 21890., 23114., 10293., 10889., 11501., 12129., 11725.,
      12353., 12997., 13657.};
  const std::array<int, 4> in_shape = {{3, 5, 5, 4}};
  const int multiplier = 2;
  const auto padding = sycldnn::PaddingMode::VALID;
  const DataType max_input_val = 2048.0;
  this->run_input_backprop_test(exp_out, in_shape, multiplier, padding,
                                max_input_val);
}
TYPED_TEST(InputBackpropWindow3Stride2, SAME3x5x5x4x4) {
  using DataType = typename TestFixture::DataType;
  const std::vector<DataType> exp_out = {
      670.,    1838.,   3134.,   4558.,   4572.,   7164.,   10012.,  13116.,
      4926.,   6350.,   7902.,   9582.,   13084.,  16188.,  19548.,  23164.,
      9182.,   10862.,  12670.,  14606.,  4892.,   7996.,   11356.,  14972.,
      16248.,  22968.,  30200.,  37944.,  13404.,  17020.,  20892.,  25020.,
      33272.,  41016.,  49272.,  58040.,  21916.,  26044.,  30428.,  35068.,
      13438.,  15374.,  17438.,  19630.,  30108.,  34236.,  38620.,  43260.,
      17694.,  19886.,  22206.,  24654.,  38620.,  43260.,  48156.,  53308.,
      21950.,  24398.,  26974.,  29678.,  30428.,  35068.,  39964.,  45116.,
      67320.,  77112.,  87416.,  98232.,  38940.,  44092.,  49500.,  55164.,
      84344.,  95160.,  106488., 118328., 47452.,  53116.,  59036.,  65212.,
      26206.,  28910.,  31742.,  34702.,  55644.,  61308.,  67228.,  73404.,
      30462.,  33422.,  36510.,  39726.,  64156.,  70332.,  76764.,  83452.,
      34718.,  37934.,  41278.,  44750.,  38974.,  42446.,  46046.,  49774.,
      81180.,  88380.,  95836.,  103548., 43230.,  46958.,  50814.,  54798.,
      89692.,  97404.,  105372., 113596., 47486.,  51470.,  55582.,  59822.,
      81500.,  89212.,  97180.,  105404., 169464., 185400., 201848., 218808.,
      90012.,  98236.,  106716., 115452., 186488., 203448., 220920., 238904.,
      98524.,  107260., 116252., 125500., 51742.,  55982.,  60350.,  64846.,
      106716., 115452., 124444., 133692., 55998.,  60494.,  65118.,  69870.,
      115228., 124476., 133980., 143740., 60254.,  65006.,  69886.,  74894.,
      107036., 116284., 125788., 135548., 220536., 239544., 259064., 279096.,
      115548., 125308., 135324., 145596., 237560., 257592., 278136., 299192.,
      124060., 134332., 144860., 155644., 64510.,  69518.,  74654.,  79918.,
      132252., 142524., 153052., 163836., 68766.,  74030.,  79422.,  84942.,
      140764., 151548., 162588., 173884., 73022.,  78542.,  84190.,  89966.,
      77278.,  83054.,  88958.,  94990.,  157788., 169596., 181660., 193980.,
      81534.,  87566.,  93726.,  100014., 166300., 178620., 191196., 204028.,
      85790.,  92078.,  98494.,  105038., 158108., 170428., 183004., 195836.,
      322680., 347832., 373496., 399672., 166620., 179452., 192540., 205884.,
      339704., 365880., 392568., 419768., 175132., 188476., 202076., 215932.,
      90046.,  96590.,  103262., 110062., 183324., 196668., 210268., 224124.,
      94302.,  101102., 108030., 115086., 191836., 205692., 219804., 234172.,
      98558.,  105614., 112798., 120110., 183644., 197500., 211612., 225980.,
      373752., 401976., 430712., 459960., 192156., 206524., 221148., 236028.,
      390776., 420024., 449784., 480056., 200668., 215548., 230684., 246076.,
      102814., 110126., 117566., 125134., 208860., 223740., 238876., 254268.,
      107070., 114638., 122334., 130158., 217372., 232764., 248412., 264316.,
      111326., 119150., 127102., 135182.};
  const std::array<int, 4> in_shape = {{3, 5, 5, 4}};
  const int multiplier = 4;
  const auto padding = sycldnn::PaddingMode::SAME;
  const DataType max_input_val = 2048.0;
  this->run_input_backprop_test(exp_out, in_shape, multiplier, padding,
                                max_input_val);
}
TYPED_TEST(InputBackpropWindow3Stride2, VALID3x5x5x4x4) {
  using DataType = typename TestFixture::DataType;
  const std::vector<DataType> exp_out = {
      30.,     174.,    446.,    846.,    190.,   590.,    1118.,   1774.,
      540.,    1596.,   2908.,   4476.,   1374.,  2030.,   2814.,   3726.,
      2558.,   3470.,   4510.,   5678.,   510.,   1422.,   2462.,   3630.,
      670.,    1838.,   3134.,   4558.,   4572.,  7164.,   10012.,  13116.,
      4926.,   6350.,   7902.,   9582.,   6110.,  7790.,   9598.,   11534.,
      1340.,   3676.,   6268.,   9116.,   3708.,  6556.,   9660.,   13020.,
      13880.,  20088.,  26808.,  34040.,  12220., 15580.,  19196.,  23068.,
      16636.,  20508.,  24636.,  29020.,  6974.,  8398.,   9950.,   11630.,
      9182.,   10862.,  12670.,  14606.,  21596., 25212.,  29084.,  33212.,
      13438.,  15374.,  17438.,  19630.,  16670., 18862.,  21182.,  23630.,
      13598.,  15790.,  18110.,  20558.,  15806., 18254.,  20830.,  23534.,
      37916.,  43068.,  48476.,  54140.,  23134., 25838.,  28670.,  31630.,
      26366.,  29326.,  32414.,  35630.,  670.,   1838.,   3134.,   4558.,
      4926.,   6350.,   7902.,   9582.,   10012., 13116.,  16476.,  20092.,
      6110.,   7790.,   9598.,   11534.,  11390., 13326.,  15390.,  17582.,
      13438.,  15374.,  17438.,  19630.,  17694., 19886.,  22206.,  24654.,
      38620.,  43260.,  48156.,  53308.,  21950., 24398.,  26974.,  29678.,
      27230.,  29934.,  32766.,  35726.,  27196., 31580.,  36220.,  41116.,
      37756.,  42652.,  47804.,  53212.,  81976., 92280.,  103096., 114424.,
      46268.,  51676.,  57340.,  63260.,  58876., 64796.,  70972.,  77404.,
      19902.,  22350.,  24926.,  27630.,  26206., 28910.,  31742.,  34702.,
      55644.,  61308.,  67228.,  73404.,  30462., 33422.,  36510.,  39726.,
      37790.,  41006.,  44350.,  47822.,  38814., 42030.,  45374.,  48846.,
      45118.,  48590.,  52190.,  55918.,  96540., 103740., 111196., 118908.,
      52446.,  56174.,  60030.,  64014.,  59774., 63758.,  67870.,  72110.,
      1310.,   3502.,   5822.,   8270.,   9662.,  12110.,  14686.,  17390.,
      19484.,  24636.,  30044.,  35708.,  10846., 13550.,  16382.,  19342.,
      20222.,  23182.,  26270.,  29486.,  26366., 29326.,  32414.,  35630.,
      34718.,  37934.,  41278.,  44750.,  72668., 79356.,  86300.,  93500.,
      38974.,  42446.,  46046.,  49774.,  48350., 52078.,  55934.,  59918.,
      53052.,  59484.,  66172.,  73116.,  71804., 78748.,  85948.,  93404.,
      150072., 164472., 179384., 194808., 80316., 87772.,  95484.,  103452.,
      101116., 109084., 117308., 125788., 32830., 36302.,  39902.,  43630.,
      43230.,  46958.,  50814.,  54798.,  89692., 97404.,  105372., 113596.,
      47486.,  51470.,  55582.,  59822.,  58910., 63150.,  67518.,  72014.,
      64030.,  68270.,  72638.,  77134.,  74430., 78926.,  83550.,  88302.,
      155164., 164412., 173916., 183676., 81758., 86510.,  91390.,  96398.,
      93182.,  98190.,  103326., 108590.};
  const std::array<int, 4> in_shape = {{3, 5, 5, 4}};
  const int multiplier = 4;
  const auto padding = sycldnn::PaddingMode::VALID;
  const DataType max_input_val = 2048.0;
  this->run_input_backprop_test(exp_out, in_shape, multiplier, padding,
                                max_input_val);
}
TYPED_TEST(InputBackpropWindow3Stride2, SAME3x5x6x1x1) {
  using DataType = typename TestFixture::DataType;
  const std::vector<DataType> exp_out = {
      4.,   5.,   14.,  10.,  24.,  15.,  11.,  16.,  40.,  26.,  60.,  36.,
      16.,  20.,  44.,  25.,  54.,  30.,  35.,  46.,  100., 56.,  120., 66.,
      28.,  35.,  74.,  40.,  84.,  45.,  40.,  50.,  104., 55.,  114., 60.,
      83.,  106., 220., 116., 240., 126., 52.,  65.,  134., 70.,  144., 75.,
      107., 136., 280., 146., 300., 156., 64.,  80.,  164., 85.,  174., 90.,
      76.,  95.,  194., 100., 204., 105., 155., 196., 400., 206., 420., 216.,
      88.,  110., 224., 115., 234., 120., 179., 226., 460., 236., 480., 246.,
      100., 125., 254., 130., 264., 135.};
  const std::array<int, 4> in_shape = {{3, 5, 6, 1}};
  const int multiplier = 1;
  const auto padding = sycldnn::PaddingMode::SAME;
  const DataType max_input_val = 2048.0;
  this->run_input_backprop_test(exp_out, in_shape, multiplier, padding,
                                max_input_val);
}
TYPED_TEST(InputBackpropWindow3Stride2, VALID3x5x6x1x1) {
  using DataType = typename TestFixture::DataType;
  const std::vector<DataType> exp_out = {
      1.,  2.,  5.,   4.,  6.,   0.,   4.,  5.,  14.,  10.,  12.,  0.,   10.,
      14., 36., 24.,  30., 0.,   12.,  15., 34., 20.,  24.,  0.,   21.,  24.,
      55., 32., 36.,  0.,  5.,   10.,  21., 12., 18.,  0.,   20.,  25.,  54.,
      30., 36., 0.,   42., 54.,  116., 64., 78., 0.,   28.,  35.,  74.,  40.,
      48., 0.,  49.,  56., 119., 64.,  72., 0.,  9.,   18.,  37.,  20.,  30.,
      0.,  36., 45.,  94., 50.,  60.,  0.,  74., 94.,  196., 104., 126., 0.,
      44., 55., 114., 60., 72.,  0.,   77., 88., 183., 96.,  108., 0.};
  const std::array<int, 4> in_shape = {{3, 5, 6, 1}};
  const int multiplier = 1;
  const auto padding = sycldnn::PaddingMode::VALID;
  const DataType max_input_val = 2048.0;
  this->run_input_backprop_test(exp_out, in_shape, multiplier, padding,
                                max_input_val);
}
TYPED_TEST(InputBackpropWindow3Stride2, SAME3x5x6x1x2) {
  using DataType = typename TestFixture::DataType;
  const std::vector<DataType> exp_out = {
      23.,   29.,   88.,   67.,   164.,  105., 64.,   100.,  260.,  176.,
      412.,  252.,  113.,  143.,  316.,  181., 392.,  219.,  244.,  328.,
      716.,  404.,  868.,  480.,  203.,  257., 544.,  295.,  620.,  333.,
      293.,  371.,  772.,  409.,  848.,  447., 604.,  784.,  1628., 860.,
      1780., 936.,  383.,  485.,  1000., 523., 1076., 561.,  784.,  1012.,
      2084., 1088., 2236., 1164., 473.,  599., 1228., 637.,  1304., 675.,
      563.,  713.,  1456., 751.,  1532., 789., 1144., 1468., 2996., 1544.,
      3148., 1620., 653.,  827.,  1684., 865., 1760., 903.,  1324., 1696.,
      3452., 1772., 3604., 1848., 743.,  941., 1912., 979.,  1988., 1017.};
  const std::array<int, 4> in_shape = {{3, 5, 6, 1}};
  const int multiplier = 2;
  const auto padding = sycldnn::PaddingMode::SAME;
  const DataType max_input_val = 2048.0;
  this->run_input_backprop_test(exp_out, in_shape, multiplier, padding,
                                max_input_val);
}
TYPED_TEST(InputBackpropWindow3Stride2, VALID3x5x6x1x2) {
  using DataType = typename TestFixture::DataType;
  const std::vector<DataType> exp_out = {
      5.,   11.,  28.,   25.,  39.,  0., 23.,  29.,  88.,  67.,  81.,  0.,
      58.,  86.,  232.,  162., 206., 0., 83.,  105., 240., 143., 173., 0.,
      149., 171., 396.,  233., 263., 0., 29.,  67.,  140., 81.,  127., 0.,
      143., 181., 392.,  219., 265., 0., 298., 390., 840., 466., 574., 0.,
      203., 257., 544.,  295., 357., 0., 365., 419., 892., 481., 543., 0.,
      53.,  123., 252.,  137., 215., 0., 263., 333., 696., 371., 449., 0.,
      538., 694., 1448., 770., 942., 0., 323., 409., 848., 447., 541., 0.,
      581., 667., 1388., 729., 823., 0.};
  const std::array<int, 4> in_shape = {{3, 5, 6, 1}};
  const int multiplier = 2;
  const auto padding = sycldnn::PaddingMode::VALID;
  const DataType max_input_val = 2048.0;
  this->run_input_backprop_test(exp_out, in_shape, multiplier, padding,
                                max_input_val);
}
TYPED_TEST(InputBackpropWindow3Stride2, SAME3x5x6x1x4) {
  using DataType = typename TestFixture::DataType;
  const std::vector<DataType> exp_out = {
      150.,   190.,   612.,   486.,  1204.,  782.,   420.,   692.,   1848.,
      1284.,  3032.,  1876.,  846.,  1078.,  2388.,  1374.,  2980.,  1670.,
      1812.,  2468.,  5400.,  3060., 6584.,  3652.,  1542.,  1966.,  4164.,
      2262.,  4756.,  2558.,  2238., 2854.,  5940.,  3150.,  6532.,  3446.,
      4596.,  6020.,  12504., 6612., 13688., 7204.,  2934.,  3742.,  7716.,
      4038.,  8308.,  4334.,  5988., 7796.,  16056., 8388.,  17240., 8980.,
      3630.,  4630.,  9492.,  4926., 10084., 5222.,  4326.,  5518.,  11268.,
      5814.,  11860., 6110.,  8772., 11348., 23160., 11940., 24344., 12532.,
      5022.,  6406.,  13044., 6702., 13636., 6998.,  10164., 13124., 26712.,
      13716., 27896., 14308., 5718., 7294.,  14820., 7590.,  15412., 7886.};
  const std::array<int, 4> in_shape = {{3, 5, 6, 1}};
  const int multiplier = 4;
  const auto padding = sycldnn::PaddingMode::SAME;
  const DataType max_input_val = 2048.0;
  this->run_input_backprop_test(exp_out, in_shape, multiplier, padding,
                                max_input_val);
}
TYPED_TEST(InputBackpropWindow3Stride2, VALID3x5x6x1x4) {
  using DataType = typename TestFixture::DataType;
  const std::vector<DataType> exp_out = {
      30.,   70.,   180.,  174.,  278.,   0.,    150.,   190.,  612.,  486.,
      590.,  0.,    380.,  588.,  1640.,  1180., 1516.,  0.,    614.,  782.,
      1796., 1078., 1310., 0.,    1118.,  1286., 2996.,  1774., 2006., 0.,
      190.,  486.,  1012., 590.,  950.,   0.,    1078.,  1374., 2980., 1670.,
      2030., 0.,    2236., 2956., 6376.,  3548., 4396.,  0.,    1542., 1966.,
      4164., 2262., 2750., 0.,    2814.,  3238., 6900.,  3726., 4214., 0.,
      350.,  902.,  1844., 1006., 1622.,  0.,    2006.,  2558., 5348., 2854.,
      3470., 0.,    4092., 5324., 11112., 5916., 7276.,  0.,    2470., 3150.,
      6532., 3446., 4190., 0.,    4510.,  5190., 10804., 5678., 6422., 0.};
  const std::array<int, 4> in_shape = {{3, 5, 6, 1}};
  const int multiplier = 4;
  const auto padding = sycldnn::PaddingMode::VALID;
  const DataType max_input_val = 2048.0;
  this->run_input_backprop_test(exp_out, in_shape, multiplier, padding,
                                max_input_val);
}
TYPED_TEST(InputBackpropWindow3Stride2, SAME3x5x6x2x1) {
  using DataType = typename TestFixture::DataType;
  const std::vector<DataType> exp_out = {
      7.,    16.,   9.,   20.,   32.,   56.,   27.,   40.,   68.,  96.,
      45.,   60.,   20.,  44.,   36.,   64.,   100.,  160.,  72.,  104.,
      172.,  240.,  108., 144.,  49.,   64.,   63.,   80.,   140., 176.,
      81.,   100.,  176., 216.,  99.,   120.,  104.,  140.,  144., 184.,
      316.,  400.,  180., 224.,  388.,  480.,  216.,  264.,  91.,  112.,
      117.,  140.,  248., 296.,  135.,  160.,  284.,  336.,  153., 180.,
      133.,  160.,  171., 200.,  356.,  416.,  189.,  220.,  392., 456.,
      207.,  240.,  272., 332.,  360.,  424.,  748.,  880.,  396., 464.,
      820.,  960.,  432., 504.,  175.,  208.,  225.,  260.,  464., 536.,
      243.,  280.,  500., 576.,  261.,  300.,  356.,  428.,  468., 544.,
      964.,  1120., 504., 584.,  1036., 1200., 540.,  624.,  217., 256.,
      279.,  320.,  572., 656.,  297.,  340.,  608.,  696.,  315., 360.,
      259.,  304.,  333., 380.,  680.,  776.,  351.,  400.,  716., 816.,
      369.,  420.,  524., 620.,  684.,  784.,  1396., 1600., 720., 824.,
      1468., 1680., 756., 864.,  301.,  352.,  387.,  440.,  788., 896.,
      405.,  460.,  824., 936.,  423.,  480.,  608.,  716.,  792., 904.,
      1612., 1840., 828., 944.,  1684., 1920., 864.,  984.,  343., 400.,
      441.,  500.,  896., 1016., 459.,  520.,  932.,  1056., 477., 540.};
  const std::array<int, 4> in_shape = {{3, 5, 6, 2}};
  const int multiplier = 1;
  const auto padding = sycldnn::PaddingMode::SAME;
  const DataType max_input_val = 2048.0;
  this->run_input_backprop_test(exp_out, in_shape, multiplier, padding,
                                max_input_val);
}
TYPED_TEST(InputBackpropWindow3Stride2, VALID3x5x6x2x1) {
  using DataType = typename TestFixture::DataType;
  const std::vector<DataType> exp_out = {
      1.,   4.,   3.,   8.,   8.,   20.,  9.,   16.,  15.,  24.,  0., 0.,
      7.,   16.,  9.,   20.,  32.,  56.,  27.,  40.,  33.,  48.,  0., 0.,
      18.,  40.,  30.,  56.,  88.,  144., 66.,  96.,  86.,  120., 0., 0.,
      35.,  48.,  45.,  60.,  104., 136., 63.,  80.,  77.,  96.,  0., 0.,
      65.,  84.,  75.,  96.,  176., 220., 105., 128., 119., 144., 0., 0.,
      9.,   20.,  27.,  40.,  56.,  84.,  33.,  48.,  55.,  72.,  0., 0.,
      63.,  80.,  81.,  100., 176., 216., 99.,  120., 121., 144., 0., 0.,
      130., 168., 174., 216., 376., 464., 210., 256., 262., 312., 0., 0.,
      91.,  112., 117., 140., 248., 296., 135., 160., 165., 192., 0., 0.,
      169., 196., 195., 224., 416., 476., 225., 256., 255., 288., 0., 0.,
      17.,  36.,  51.,  72.,  104., 148., 57.,  80.,  95.,  120., 0., 0.,
      119., 144., 153., 180., 320., 376., 171., 200., 209., 240., 0., 0.,
      242., 296., 318., 376., 664., 784., 354., 416., 438., 504., 0., 0.,
      147., 176., 189., 220., 392., 456., 207., 240., 253., 288., 0., 0.,
      273., 308., 315., 352., 656., 732., 345., 384., 391., 432., 0., 0.};
  const std::array<int, 4> in_shape = {{3, 5, 6, 2}};
  const int multiplier = 1;
  const auto padding = sycldnn::PaddingMode::VALID;
  const DataType max_input_val = 2048.0;
  this->run_input_backprop_test(exp_out, in_shape, multiplier, padding,
                                max_input_val);
}
TYPED_TEST(InputBackpropWindow3Stride2, SAME3x5x6x2x2) {
  using DataType = typename TestFixture::DataType;
  const std::vector<DataType> exp_out = {
      41.,   109.,   53.,    137.,   214.,  398.,   193.,   293.,   494.,
      710.,  333.,   449.,   118.,   302.,  238.,   454.,   692.,   1156.,
      518.,  766.,   1252.,  1780.,  798.,  1078.,  365.,   481.,   473.,
      605.,  1054.,  1334.,  613.,   761.,  1334.,  1646.,  753.,   917.,
      766.,  1046.,  1078.,  1390.,  2372., 3028.,  1358.,  1702.,  2932.,
      3652., 1638.,  2014.,  689.,   853.,  893.,   1073.,  1894.,  2270.,
      1033., 1229.,  2174.,  2582.,  1173., 1385.,  1013.,  1225.,  1313.,
      1541., 2734.,  3206.,  1453.,  1697., 3014.,  3518.,  1593.,  1853.,
      2062., 2534.,  2758.,  3262.,  5732., 6772.,  3038.,  3574.,  6292.,
      7396., 3318.,  3886.,  1337.,  1597., 1733.,  2009.,  3574.,  4142.,
      1873., 2165.,  3854.,  4454.,  2013., 2321.,  2710.,  3278.,  3598.,
      4198., 7412.,  8644.,  3878.,  4510., 7972.,  9268.,  4158.,  4822.,
      1661., 1969.,  2153.,  2477.,  4414., 5078.,  2293.,  2633.,  4694.,
      5390., 2433.,  2789.,  1985.,  2341., 2573.,  2945.,  5254.,  6014.,
      2713., 3101.,  5534.,  6326.,  2853., 3257.,  4006.,  4766.,  5278.,
      6070., 10772., 12388., 5558.,  6382., 11332., 13012., 5838.,  6694.,
      2309., 2713.,  2993.,  3413.,  6094., 6950.,  3133.,  3569.,  6374.,
      7262., 3273.,  3725.,  4654.,  5510., 6118.,  7006.,  12452., 14260.,
      6398., 7318.,  13012., 14884., 6678., 7630.,  2633.,  3085.,  3413.,
      3881., 6934.,  7886.,  3553.,  4037., 7214.,  8198.,  3693.,  4193.};
  const std::array<int, 4> in_shape = {{3, 5, 6, 2}};
  const int multiplier = 2;
  const auto padding = sycldnn::PaddingMode::SAME;
  const DataType max_input_val = 2048.0;
  this->run_input_backprop_test(exp_out, in_shape, multiplier, padding,
                                max_input_val);
}
TYPED_TEST(InputBackpropWindow3Stride2, VALID3x5x6x2x2) {
  using DataType = typename TestFixture::DataType;
  const std::vector<DataType> exp_out = {
      5.,    25.,   17.,   53.,   46.,   134.,  61.,   113.,  105.,  173.,
      0.,    0.,    41.,   109.,  53.,   137.,  214.,  398.,  193.,  293.,
      237.,  353.,  0.,    0.,    106.,  274.,  194.,  394.,  604.,  1036.,
      474.,  706.,  626.,  890.,  0.,    0.,    257.,  357.,  333.,  449.,
      774.,  1022., 473.,  605.,  581.,  729.,  0.,    0.,    485.,  633.,
      561.,  725.,  1326., 1670., 797.,  977.,  905.,  1101., 0.,    0.,
      53.,   137.,  193.,  293.,  398.,  614.,  237.,  353.,  409.,  541.,
      0.,    0.,    473.,  605.,  613.,  761.,  1334., 1646., 753.,  917.,
      925.,  1105., 0.,    0.,    970.,  1266., 1314., 1642., 2844., 3532.,
      1594., 1954., 2002., 2394., 0.,    0.,    689.,  853.,  893.,  1073.,
      1894., 2270., 1033., 1229., 1269., 1481., 0.,    0.,    1301., 1513.,
      1505., 1733., 3214., 3686., 1741., 1985., 1977., 2237., 0.,    0.,
      101.,  249.,  369.,  533.,  750.,  1094., 413.,  593.,  713.,  909.,
      0.,    0.,    905.,  1101., 1173., 1385., 2454., 2894., 1313., 1541.,
      1613., 1857., 0.,    0.,    1834., 2258., 2434., 2890., 5084., 6028.,
      2714., 3202., 3378., 3898., 0.,    0.,    1121., 1349., 1453., 1697.,
      3014., 3518., 1593., 1853., 1957., 2233., 0.,    0.,    2117., 2393.,
      2449., 2741., 5102., 5702., 2685., 2993., 3049., 3373., 0.,    0.};
  const std::array<int, 4> in_shape = {{3, 5, 6, 2}};
  const int multiplier = 2;
  const auto padding = sycldnn::PaddingMode::VALID;
  const DataType max_input_val = 2048.0;
  this->run_input_backprop_test(exp_out, in_shape, multiplier, padding,
                                max_input_val);
}
TYPED_TEST(InputBackpropWindow3Stride2, SAME3x5x6x2x4) {
  using DataType = typename TestFixture::DataType;
  const std::vector<DataType> exp_out = {
      270.,   798.,    350.,   1006.,  1548.,   2988.,   1454.,  2238.,
      3756.,  5452.,   2558.,  3470.,  780.,    2220.,   1708.,  3404.,
      5112.,  8760.,   3916.,  5868.,  9528.,   13688.,  6124.,  8332.,
      2814.,  3726.,   3662.,  4702.,  8172.,   10380.,  4766.,  5934.,
      10380., 12844.,  5870.,  7166.,  5868.,   8076.,   8332.,  10796.,
      18360., 23544.,  10540., 13260., 22776.,  28472.,  12748., 15724.,
      5358.,  6654.,   6974.,  8398.,  14796.,  17772.,  8078.,  9630.,
      17004., 20236.,  9182.,  10862., 7902.,   9582.,   10286., 12094.,
      21420., 25164.,  11390., 13326., 23628.,  27628.,  12494., 14558.,
      16044., 19788.,  21580., 25580., 44856.,  53112.,  23788., 28044.,
      49272., 58040.,  25996., 30508., 10446.,  12510.,  13598., 15790.,
      28044., 32556.,  14702., 17022., 30252.,  35020.,  15806., 18254.,
      21132., 25644.,  28204., 32972., 58104.,  67896.,  30412., 35436.,
      62520., 72824.,  32620., 37900., 12990.,  15438.,  16910., 19486.,
      34668., 39948.,  18014., 20718., 36876.,  42412.,  19118., 21950.,
      15534., 18366.,  20222., 23182., 41292.,  47340.,  21326., 24414.,
      43500., 49804.,  22430., 25646., 31308.,  37356.,  41452., 47756.,
      84600., 97464.,  43660., 50220., 89016.,  102392., 45868., 52684.,
      18078., 21294.,  23534., 26878., 47916.,  54732.,  24638., 28110.,
      50124., 57196.,  25742., 29342., 36396.,  43212.,  48076., 55148.,
      97848., 112248., 50284., 57612., 102264., 117176., 52492., 60076.,
      20622., 24222.,  26846., 30574., 54540.,  62124.,  27950., 31806.,
      56748., 64588.,  29054., 33038.};
  const std::array<int, 4> in_shape = {{3, 5, 6, 2}};
  const int multiplier = 4;
  const auto padding = sycldnn::PaddingMode::SAME;
  const DataType max_input_val = 2048.0;
  this->run_input_backprop_test(exp_out, in_shape, multiplier, padding,
                                max_input_val);
}
TYPED_TEST(InputBackpropWindow3Stride2, VALID3x5x6x2x4) {
  using DataType = typename TestFixture::DataType;
  const std::vector<DataType> exp_out = {
      30.,    174.,   110.,   382.,   300.,   972.,   446.,   846.,   782.,
      1310.,  0.,     0.,     270.,   798.,   350.,   1006.,  1548.,  2988.,
      1454.,  2238.,  1790.,  2702.,  0.,     0.,     700.,   2012.,  1372.,
      2940.,  4440.,  7832.,  3580.,  5404.,  4764.,  6844.,  0.,     0.,
      1966.,  2750.,  2558.,  3470.,  5964.,  7916.,  3662.,  4702.,  4510.,
      5678.,  0.,     0.,     3742.,  4910.,  4334.,  5630.,  10284., 13004.,
      6206.,  7630.,  7054.,  8606.,  0.,     0.,     350.,   1006.,  1454.,
      2238.,  2988.,  4684.,  1790.,  2702.,  3150.,  4190.,  0.,     0.,
      3662.,  4702.,  4766.,  5934.,  10380., 12844., 5870.,  7166.,  7230.,
      8654.,  0.,     0.,     7484.,  9820.,  10204., 12796., 22104., 27544.,
      12412., 15260., 15644., 18748., 0.,     0.,     5358.,  6654.,  6974.,
      8398.,  14796., 17772., 8078.,  9630.,  9950.,  11630., 0.,     0.,
      10206., 11886., 11822., 13630., 25260., 29004., 13694., 15630., 15566.,
      17630., 0.,     0.,     670.,   1838.,  2798.,  4094.,  5676.,  8396.,
      3134.,  4558.,  5518.,  7070.,  0.,     0.,     7054.,  8606.,  9182.,
      10862., 19212., 22700., 10286., 12094., 12670., 14606., 0.,     0.,
      14268., 17628., 19036., 22652., 39768., 47256., 21244., 25116., 26524.,
      30652., 0.,     0.,     8750.,  10558., 11390., 13326., 23628., 27628.,
      12494., 14558., 15390., 17582., 0.,     0.,     16670., 18862., 19310.,
      21630., 40236., 45004., 21182., 23630., 24078., 26654., 0.,     0.};
  const std::array<int, 4> in_shape = {{3, 5, 6, 2}};
  const int multiplier = 4;
  const auto padding = sycldnn::PaddingMode::VALID;
  const DataType max_input_val = 2048.0;
  this->run_input_backprop_test(exp_out, in_shape, multiplier, padding,
                                max_input_val);
}
TYPED_TEST(InputBackpropWindow3Stride2, SAME3x5x6x4x1) {
  using DataType = typename TestFixture::DataType;
  const std::vector<DataType> exp_out = {
      13.,   28.,   45.,   64.,   17.,   36.,   57.,   80.,   86.,   128.,
      174.,  224.,  85.,   108.,  133.,  160.,  222.,  272.,  326.,  384.,
      153.,  180.,  209.,  240.,  38.,   80.,   126.,  176.,  94.,   144.,
      198.,  256.,  292.,  400.,  516.,  640.,  230.,  288.,  350.,  416.,
      564.,  688.,  820.,  960.,  366.,  432.,  502.,  576.,  169.,  196.,
      225.,  256.,  221.,  252.,  285.,  320.,  494.,  560.,  630.,  704.,
      289.,  324.,  361.,  400.,  630.,  704.,  782.,  864.,  357.,  396.,
      437.,  480.,  350.,  416.,  486.,  560.,  502.,  576.,  654.,  736.,
      1108., 1264., 1428., 1600., 638.,  720.,  806.,  896.,  1380., 1552.,
      1732., 1920., 774.,  864.,  958.,  1056., 325.,  364.,  405.,  448.,
      425.,  468.,  513.,  560.,  902.,  992.,  1086., 1184., 493.,  540.,
      589.,  640.,  1038., 1136., 1238., 1344., 561.,  612.,  665.,  720.,
      481.,  532.,  585.,  640.,  629.,  684.,  741.,  800.,  1310., 1424.,
      1542., 1664., 697.,  756.,  817.,  880.,  1446., 1568., 1694., 1824.,
      765.,  828.,  893.,  960.,  974.,  1088., 1206., 1328., 1318., 1440.,
      1566., 1696., 2740., 2992., 3252., 3520., 1454., 1584., 1718., 1856.,
      3012., 3280., 3556., 3840., 1590., 1728., 1870., 2016., 637.,  700.,
      765.,  832.,  833.,  900.,  969.,  1040., 1718., 1856., 1998., 2144.,
      901.,  972.,  1045., 1120., 1854., 2000., 2150., 2304., 969.,  1044.,
      1121., 1200., 1286., 1424., 1566., 1712., 1726., 1872., 2022., 2176.,
      3556., 3856., 4164., 4480., 1862., 2016., 2174., 2336., 3828., 4144.,
      4468., 4800., 1998., 2160., 2326., 2496., 793.,  868.,  945.,  1024.,
      1037., 1116., 1197., 1280., 2126., 2288., 2454., 2624., 1105., 1188.,
      1273., 1360., 2262., 2432., 2606., 2784., 1173., 1260., 1349., 1440.,
      949.,  1036., 1125., 1216., 1241., 1332., 1425., 1520., 2534., 2720.,
      2910., 3104., 1309., 1404., 1501., 1600., 2670., 2864., 3062., 3264.,
      1377., 1476., 1577., 1680., 1910., 2096., 2286., 2480., 2542., 2736.,
      2934., 3136., 5188., 5584., 5988., 6400., 2678., 2880., 3086., 3296.,
      5460., 5872., 6292., 6720., 2814., 3024., 3238., 3456., 1105., 1204.,
      1305., 1408., 1445., 1548., 1653., 1760., 2942., 3152., 3366., 3584.,
      1513., 1620., 1729., 1840., 3078., 3296., 3518., 3744., 1581., 1692.,
      1805., 1920., 2222., 2432., 2646., 2864., 2950., 3168., 3390., 3616.,
      6004., 6448., 6900., 7360., 3086., 3312., 3542., 3776., 6276., 6736.,
      7204., 7680., 3222., 3456., 3694., 3936., 1261., 1372., 1485., 1600.,
      1649., 1764., 1881., 2000., 3350., 3584., 3822., 4064., 1717., 1836.,
      1957., 2080., 3486., 3728., 3974., 4224., 1785., 1908., 2033., 2160.};
  const std::array<int, 4> in_shape = {{3, 5, 6, 4}};
  const int multiplier = 1;
  const auto padding = sycldnn::PaddingMode::SAME;
  const DataType max_input_val = 2048.0;
  this->run_input_backprop_test(exp_out, in_shape, multiplier, padding,
                                max_input_val);
}
TYPED_TEST(InputBackpropWindow3Stride2, VALID3x5x6x4x1) {
  using DataType = typename TestFixture::DataType;
  const std::vector<DataType> exp_out = {
      1.,    4.,    9.,    16.,   5.,    12.,   21.,   32.,   14.,   32.,
      54.,   80.,   25.,   36.,   49.,   64.,   45.,   60.,   77.,   96.,
      0.,    0.,    0.,    0.,    13.,   28.,   45.,   64.,   17.,   36.,
      57.,   80.,   86.,   128.,  174.,  224.,  85.,   108.,  133.,  160.,
      105.,  132.,  161.,  192.,  0.,    0.,    0.,    0.,    34.,   72.,
      114.,  160.,  74.,   120.,  170.,  224.,  252.,  352.,  460.,  576.,
      210.,  264.,  322.,  384.,  282.,  344.,  410.,  480.,  0.,    0.,
      0.,    0.,    117.,  140.,  165.,  192.,  153.,  180.,  209.,  240.,
      358.,  416.,  478.,  544.,  221.,  252.,  285.,  320.,  273.,  308.,
      345.,  384.,  0.,    0.,    0.,    0.,    225.,  260.,  297.,  336.,
      261.,  300.,  341.,  384.,  622.,  704.,  790.,  880.,  377.,  420.,
      465.,  512.,  429.,  476.,  525.,  576.,  0.,    0.,    0.,    0.,
      17.,   36.,   57.,   80.,   85.,   108.,  133.,  160.,  174.,  224.,
      278.,  336.,  105.,  132.,  161.,  192.,  189.,  220.,  253.,  288.,
      0.,    0.,    0.,    0.,    221.,  252.,  285.,  320.,  289.,  324.,
      361.,  400.,  630.,  704.,  782.,  864.,  357.,  396.,  437.,  480.,
      441.,  484.,  529.,  576.,  0.,    0.,    0.,    0.,    450.,  520.,
      594.,  672.,  618.,  696.,  778.,  864.,  1340., 1504., 1676., 1856.,
      754.,  840.,  930.,  1024., 954.,  1048., 1146., 1248., 0.,    0.,
      0.,    0.,    325.,  364.,  405.,  448.,  425.,  468.,  513.,  560.,
      902.,  992.,  1086., 1184., 493.,  540.,  589.,  640.,  609.,  660.,
      713.,  768.,  0.,    0.,    0.,    0.,    625.,  676.,  729.,  784.,
      725.,  780.,  837.,  896.,  1550., 1664., 1782., 1904., 841.,  900.,
      961.,  1024., 957.,  1020., 1085., 1152., 0.,    0.,    0.,    0.,
      33.,   68.,   105.,  144.,  165.,  204.,  245.,  288.,  334.,  416.,
      502.,  592.,  185.,  228.,  273.,  320.,  333.,  380.,  429.,  480.,
      0.,    0.,    0.,    0.,    429.,  476.,  525.,  576.,  561.,  612.,
      665.,  720.,  1174., 1280., 1390., 1504., 629.,  684.,  741.,  800.,
      777.,  836.,  897.,  960.,  0.,    0.,    0.,    0.,    866.,  968.,
      1074., 1184., 1162., 1272., 1386., 1504., 2428., 2656., 2892., 3136.,
      1298., 1416., 1538., 1664., 1626., 1752., 1882., 2016., 0.,    0.,
      0.,    0.,    533.,  588.,  645.,  704.,  697.,  756.,  817.,  880.,
      1446., 1568., 1694., 1824., 765.,  828.,  893.,  960.,  945.,  1012.,
      1081., 1152., 0.,    0.,    0.,    0.,    1025., 1092., 1161., 1232.,
      1189., 1260., 1333., 1408., 2478., 2624., 2774., 2928., 1305., 1380.,
      1457., 1536., 1485., 1564., 1645., 1728., 0.,    0.,    0.,    0.};
  const std::array<int, 4> in_shape = {{3, 5, 6, 4}};
  const int multiplier = 1;
  const auto padding = sycldnn::PaddingMode::VALID;
  const DataType max_input_val = 2048.0;
  this->run_input_backprop_test(exp_out, in_shape, multiplier, padding,
                                max_input_val);
}
TYPED_TEST(InputBackpropWindow3Stride2, SAME3x5x6x4x2) {
  using DataType = typename TestFixture::DataType;
  const std::vector<DataType> exp_out = {
      77.,    193.,   325.,   473.,   101.,   249.,   413.,   593.,   610.,
      938.,   1298.,  1690.,  637.,   817.,   1013.,  1225.,  1682.,  2074.,
      2498.,  2954.,  1173.,  1385.,  1613.,  1857.,  226.,   554.,   914.,
      1306.,  658.,   1050.,  1474.,  1930.,  2132.,  2980.,  3892.,  4868.,
      1730.,  2186.,  2674.,  3194.,  4276.,  5252.,  6292.,  7396.,  2802.,
      3322.,  3874.,  4458.,  1301.,  1513.,  1741.,  1985.,  1709.,  1953.,
      2213.,  2489.,  3826.,  4346.,  4898.,  5482.,  2245.,  2521.,  2813.,
      3121.,  4898.,  5482.,  6098.,  6746.,  2781.,  3089.,  3413.,  3753.,
      2674.,  3194.,  3746.,  4330.,  3874.,  4458.,  5074.,  5722.,  8564.,
      9796.,  11092., 12452., 4946.,  5594.,  6274.,  6986.,  10708., 12068.,
      13492., 14980., 6018.,  6730.,  7474.,  8250.,  2525.,  2833.,  3157.,
      3497.,  3317.,  3657.,  4013.,  4385.,  7042.,  7754.,  8498.,  9274.,
      3853.,  4225.,  4613.,  5017.,  8114.,  8890.,  9698.,  10538., 4389.,
      4793.,  5213.,  5649.,  3749.,  4153.,  4573.,  5009.,  4925.,  5361.,
      5813.,  6281.,  10258., 11162., 12098., 13066., 5461.,  5929.,  6413.,
      6913.,  11330., 12298., 13298., 14330., 5997.,  6497.,  7013.,  7545.,
      7570.,  8474.,  9410.,  10378., 10306., 11274., 12274., 13306., 21428.,
      23428., 25492., 27620., 11378., 12410., 13474., 14570., 23572., 25700.,
      27892., 30148., 12450., 13546., 14674., 15834., 4973.,  5473.,  5989.,
      6521.,  6533.,  7065.,  7613.,  8177.,  13474., 14570., 15698., 16858.,
      7069.,  7633.,  8213.,  8809.,  14546., 15706., 16898., 18122., 7605.,
      8201.,  8813.,  9441.,  10018., 11114., 12242., 13402., 13522., 14682.,
      15874., 17098., 27860., 30244., 32692., 35204., 14594., 15818., 17074.,
      18362., 30004., 32516., 35092., 37732., 15666., 16954., 18274., 19626.,
      6197.,  6793.,  7405.,  8033.,  8141.,  8769.,  9413.,  10073., 16690.,
      17978., 19298., 20650., 8677.,  9337.,  10013., 10705., 17762., 19114.,
      20498., 21914., 9213.,  9905.,  10613., 11337., 7421.,  8113.,  8821.,
      9545.,  9749.,  10473., 11213., 11969., 19906., 21386., 22898., 24442.,
      10285., 11041., 11813., 12601., 20978., 22522., 24098., 25706., 10821.,
      11609., 12413., 13233., 14914., 16394., 17906., 19450., 19954., 21498.,
      23074., 24682., 40724., 43876., 47092., 50372., 21026., 22634., 24274.,
      25946., 42868., 46148., 49492., 52900., 22098., 23770., 25474., 27210.,
      8645.,  9433.,  10237., 11057., 11357., 12177., 13013., 13865., 23122.,
      24794., 26498., 28234., 11893., 12745., 13613., 14497., 24194., 25930.,
      27698., 29498., 12429., 13313., 14213., 15129., 17362., 19034., 20738.,
      22474., 23170., 24906., 26674., 28474., 47156., 50692., 54292., 57956.,
      24242., 26042., 27874., 29738., 49300., 52964., 56692., 60484., 25314.,
      27178., 29074., 31002., 9869.,  10753., 11653., 12569., 12965., 13881.,
      14813., 15761., 26338., 28202., 30098., 32026., 13501., 14449., 15413.,
      16393., 27410., 29338., 31298., 33290., 14037., 15017., 16013., 17025.};
  const std::array<int, 4> in_shape = {{3, 5, 6, 4}};
  const int multiplier = 2;
  const auto padding = sycldnn::PaddingMode::SAME;
  const DataType max_input_val = 2048.0;
  this->run_input_backprop_test(exp_out, in_shape, multiplier, padding,
                                max_input_val);
}
TYPED_TEST(InputBackpropWindow3Stride2, VALID3x5x6x4x2) {
  using DataType = typename TestFixture::DataType;
  const std::vector<DataType> exp_out = {
      5.,     25.,    61.,    113.,   29.,    81.,    149.,   233.,   82.,
      218.,   386.,   586.,   181.,   265.,   365.,   481.,   333.,   449.,
      581.,   729.,   0.,     0.,     0.,     0.,     77.,    193.,   325.,
      473.,   101.,   249.,   413.,   593.,   610.,   938.,   1298.,  1690.,
      637.,   817.,   1013.,  1225.,  789.,   1001.,  1229.,  1473.,  0.,
      0.,     0.,     0.,     202.,   498.,   826.,   1186.,  506.,   866.,
      1258.,  1682.,  1828.,  2612.,  3460.,  4372.,  1578.,  2002.,  2458.,
      2946.,  2138.,  2626.,  3146.,  3698.,  0.,     0.,     0.,     0.,
      893.,   1073.,  1269.,  1481.,  1173.,  1385.,  1613.,  1857.,  2754.,
      3210.,  3698.,  4218.,  1709.,  1953.,  2213.,  2489.,  2117.,  2393.,
      2685.,  2993.,  0.,     0.,     0.,     0.,     1733.,  2009.,  2301.,
      2609.,  2013.,  2321.,  2645.,  2985.,  4818.,  5466.,  6146.,  6858.,
      2933.,  3273.,  3629.,  4001.,  3341.,  3713.,  4101.,  4505.,  0.,
      0.,     0.,     0.,     101.,   249.,   413.,   593.,   637.,   817.,
      1013.,  1225.,  1298.,  1690.,  2114.,  2570.,  789.,   1001.,  1229.,
      1473.,  1453.,  1697.,  1957.,  2233.,  0.,     0.,     0.,     0.,
      1709.,  1953.,  2213.,  2489.,  2245.,  2521.,  2813.,  3121.,  4898.,
      5482.,  6098.,  6746.,  2781.,  3089.,  3413.,  3753.,  3445.,  3785.,
      4141.,  4513.,  0.,     0.,     0.,     0.,     3466.,  4018.,  4602.,
      5218.,  4794.,  5410.,  6058.,  6738.,  10404., 11700., 13060., 14484.,
      5866.,  6546.,  7258.,  8002.,  7450.,  8194.,  8970.,  9778.,  0.,
      0.,     0.,     0.,     2525.,  2833.,  3157.,  3497.,  3317.,  3657.,
      4013.,  4385.,  7042.,  7754.,  8498.,  9274.,  3853.,  4225.,  4613.,
      5017.,  4773.,  5177.,  5597.,  6033.,  0.,     0.,     0.,     0.,
      4901.,  5305.,  5725.,  6161.,  5693.,  6129.,  6581.,  7049.,  12178.,
      13082., 14018., 14986., 6613.,  7081.,  7565.,  8065.,  7533.,  8033.,
      8549.,  9081.,  0.,     0.,     0.,     0.,     197.,   473.,   765.,
      1073.,  1245.,  1553.,  1877.,  2217.,  2514.,  3162.,  3842.,  4554.,
      1397.,  1737.,  2093.,  2465.,  2573.,  2945.,  3333.,  3737.,  0.,
      0.,     0.,     0.,     3341.,  3713.,  4101.,  4505.,  4389.,  4793.,
      5213.,  5649.,  9186.,  10026., 10898., 11802., 4925.,  5361.,  5813.,
      6281.,  6101.,  6569.,  7053.,  7553.,  0.,     0.,     0.,     0.,
      6730.,  7538.,  8378.,  9250.,  9082.,  9954.,  10858., 11794., 18980.,
      20788., 22660., 24596., 10154., 11090., 12058., 13058., 12762., 13762.,
      14794., 15858., 0.,     0.,     0.,     0.,     4157.,  4593.,  5045.,
      5513.,  5461.,  5929.,  6413.,  6913.,  11330., 12298., 13298., 14330.,
      5997.,  6497.,  7013.,  7545.,  7429.,  7961.,  8509.,  9073.,  0.,
      0.,     0.,     0.,     8069.,  8601.,  9149.,  9713.,  9373.,  9937.,
      10517., 11113., 19538., 20698., 21890., 23114., 10293., 10889., 11501.,
      12129., 11725., 12353., 12997., 13657., 0.,     0.,     0.,     0.};
  const std::array<int, 4> in_shape = {{3, 5, 6, 4}};
  const int multiplier = 2;
  const auto padding = sycldnn::PaddingMode::VALID;
  const DataType max_input_val = 2048.0;
  this->run_input_backprop_test(exp_out, in_shape, multiplier, padding,
                                max_input_val);
}
TYPED_TEST(InputBackpropWindow3Stride2, SAME3x5x6x4x4) {
  using DataType = typename TestFixture::DataType;
  const std::vector<DataType> exp_out = {
      510.,    1422.,   2462.,   3630.,   670.,    1838.,   3134.,   4558.,
      4572.,   7164.,   10012.,  13116.,  4926.,   6350.,   7902.,   9582.,
      13084.,  16188.,  19548.,  23164.,  9182.,   10862.,  12670.,  14606.,
      1500.,   4092.,   6940.,   10044.,  4892.,   7996.,   11356.,  14972.,
      16248.,  22968.,  30200.,  37944.,  13404.,  17020.,  20892.,  25020.,
      33272.,  41016.,  49272.,  58040.,  21916.,  26044.,  30428.,  35068.,
      10206.,  11886.,  13694.,  15630.,  13438.,  15374.,  17438.,  19630.,
      30108.,  34236.,  38620.,  43260.,  17694.,  19886.,  22206.,  24654.,
      38620.,  43260.,  48156.,  53308.,  21950.,  24398.,  26974.,  29678.,
      20892.,  25020.,  29404.,  34044.,  30428.,  35068.,  39964.,  45116.,
      67320.,  77112.,  87416.,  98232.,  38940.,  44092.,  49500.,  55164.,
      84344.,  95160.,  106488., 118328., 47452.,  53116.,  59036.,  65212.,
      19902.,  22350.,  24926.,  27630.,  26206.,  28910.,  31742.,  34702.,
      55644.,  61308.,  67228.,  73404.,  30462.,  33422.,  36510.,  39726.,
      64156.,  70332.,  76764.,  83452.,  34718.,  37934.,  41278.,  44750.,
      29598.,  32814.,  36158.,  39630.,  38974.,  42446.,  46046.,  49774.,
      81180.,  88380.,  95836.,  103548., 43230.,  46958.,  50814.,  54798.,
      89692.,  97404.,  105372., 113596., 47486.,  51470.,  55582.,  59822.,
      59676.,  66876.,  74332.,  82044.,  81500.,  89212.,  97180.,  105404.,
      169464., 185400., 201848., 218808., 90012.,  98236.,  106716., 115452.,
      186488., 203448., 220920., 238904., 98524.,  107260., 116252., 125500.,
      39294.,  43278.,  47390.,  51630.,  51742.,  55982.,  60350.,  64846.,
      106716., 115452., 124444., 133692., 55998.,  60494.,  65118.,  69870.,
      115228., 124476., 133980., 143740., 60254.,  65006.,  69886.,  74894.,
      79068.,  87804.,  96796.,  106044., 107036., 116284., 125788., 135548.,
      220536., 239544., 259064., 279096., 115548., 125308., 135324., 145596.,
      237560., 257592., 278136., 299192., 124060., 134332., 144860., 155644.,
      48990.,  53742.,  58622.,  63630.,  64510.,  69518.,  74654.,  79918.,
      132252., 142524., 153052., 163836., 68766.,  74030.,  79422.,  84942.,
      140764., 151548., 162588., 173884., 73022.,  78542.,  84190.,  89966.,
      58686.,  64206.,  69854.,  75630.,  77278.,  83054.,  88958.,  94990.,
      157788., 169596., 181660., 193980., 81534.,  87566.,  93726.,  100014.,
      166300., 178620., 191196., 204028., 85790.,  92078.,  98494.,  105038.,
      117852., 129660., 141724., 154044., 158108., 170428., 183004., 195836.,
      322680., 347832., 373496., 399672., 166620., 179452., 192540., 205884.,
      339704., 365880., 392568., 419768., 175132., 188476., 202076., 215932.,
      68382.,  74670.,  81086.,  87630.,  90046.,  96590.,  103262., 110062.,
      183324., 196668., 210268., 224124., 94302.,  101102., 108030., 115086.,
      191836., 205692., 219804., 234172., 98558.,  105614., 112798., 120110.,
      137244., 150588., 164188., 178044., 183644., 197500., 211612., 225980.,
      373752., 401976., 430712., 459960., 192156., 206524., 221148., 236028.,
      390776., 420024., 449784., 480056., 200668., 215548., 230684., 246076.,
      78078.,  85134.,  92318.,  99630.,  102814., 110126., 117566., 125134.,
      208860., 223740., 238876., 254268., 107070., 114638., 122334., 130158.,
      217372., 232764., 248412., 264316., 111326., 119150., 127102., 135182.};
  const std::array<int, 4> in_shape = {{3, 5, 6, 4}};
  const int multiplier = 4;
  const auto padding = sycldnn::PaddingMode::SAME;
  const DataType max_input_val = 2048.0;
  this->run_input_backprop_test(exp_out, in_shape, multiplier, padding,
                                max_input_val);
}
TYPED_TEST(InputBackpropWindow3Stride2, VALID3x5x6x4x4) {
  using DataType = typename TestFixture::DataType;
  const std::vector<DataType> exp_out = {
      30.,     174.,    446.,    846.,    190.,   590.,   1118.,  1774.,
      540.,    1596.,   2908.,   4476.,   1374.,  2030.,  2814.,  3726.,
      2558.,   3470.,   4510.,   5678.,   0.,     0.,     0.,     0.,
      510.,    1422.,   2462.,   3630.,   670.,   1838.,  3134.,  4558.,
      4572.,   7164.,   10012.,  13116.,  4926.,  6350.,  7902.,  9582.,
      6110.,   7790.,   9598.,   11534.,  0.,     0.,     0.,     0.,
      1340.,   3676.,   6268.,   9116.,   3708.,  6556.,  9660.,  13020.,
      13880.,  20088.,  26808.,  34040.,  12220., 15580., 19196., 23068.,
      16636.,  20508.,  24636.,  29020.,  0.,     0.,     0.,     0.,
      6974.,   8398.,   9950.,   11630.,  9182.,  10862., 12670., 14606.,
      21596.,  25212.,  29084.,  33212.,  13438., 15374., 17438., 19630.,
      16670.,  18862.,  21182.,  23630.,  0.,     0.,     0.,     0.,
      13598.,  15790.,  18110.,  20558.,  15806., 18254., 20830., 23534.,
      37916.,  43068.,  48476.,  54140.,  23134., 25838., 28670., 31630.,
      26366.,  29326.,  32414.,  35630.,  0.,     0.,     0.,     0.,
      670.,    1838.,   3134.,   4558.,   4926.,  6350.,  7902.,  9582.,
      10012.,  13116.,  16476.,  20092.,  6110.,  7790.,  9598.,  11534.,
      11390.,  13326.,  15390.,  17582.,  0.,     0.,     0.,     0.,
      13438.,  15374.,  17438.,  19630.,  17694., 19886., 22206., 24654.,
      38620.,  43260.,  48156.,  53308.,  21950., 24398., 26974., 29678.,
      27230.,  29934.,  32766.,  35726.,  0.,     0.,     0.,     0.,
      27196.,  31580.,  36220.,  41116.,  37756., 42652., 47804., 53212.,
      81976.,  92280.,  103096., 114424., 46268., 51676., 57340., 63260.,
      58876.,  64796.,  70972.,  77404.,  0.,     0.,     0.,     0.,
      19902.,  22350.,  24926.,  27630.,  26206., 28910., 31742., 34702.,
      55644.,  61308.,  67228.,  73404.,  30462., 33422., 36510., 39726.,
      37790.,  41006.,  44350.,  47822.,  0.,     0.,     0.,     0.,
      38814.,  42030.,  45374.,  48846.,  45118., 48590., 52190., 55918.,
      96540.,  103740., 111196., 118908., 52446., 56174., 60030., 64014.,
      59774.,  63758.,  67870.,  72110.,  0.,     0.,     0.,     0.,
      1310.,   3502.,   5822.,   8270.,   9662.,  12110., 14686., 17390.,
      19484.,  24636.,  30044.,  35708.,  10846., 13550., 16382., 19342.,
      20222.,  23182.,  26270.,  29486.,  0.,     0.,     0.,     0.,
      26366.,  29326.,  32414.,  35630.,  34718., 37934., 41278., 44750.,
      72668.,  79356.,  86300.,  93500.,  38974., 42446., 46046., 49774.,
      48350.,  52078.,  55934.,  59918.,  0.,     0.,     0.,     0.,
      53052.,  59484.,  66172.,  73116.,  71804., 78748., 85948., 93404.,
      150072., 164472., 179384., 194808., 80316., 87772., 95484., 103452.,
      101116., 109084., 117308., 125788., 0.,     0.,     0.,     0.,
      32830.,  36302.,  39902.,  43630.,  43230., 46958., 50814., 54798.,
      89692.,  97404.,  105372., 113596., 47486., 51470., 55582., 59822.,
      58910.,  63150.,  67518.,  72014.,  0.,     0.,     0.,     0.,
      64030.,  68270.,  72638.,  77134.,  74430., 78926., 83550., 88302.,
      155164., 164412., 173916., 183676., 81758., 86510., 91390., 96398.,
      93182.,  98190.,  103326., 108590., 0.,     0.,     0.,     0.};
  const std::array<int, 4> in_shape = {{3, 5, 6, 4}};
  const int multiplier = 4;
  const auto padding = sycldnn::PaddingMode::VALID;
  const DataType max_input_val = 2048.0;
  this->run_input_backprop_test(exp_out, in_shape, multiplier, padding,
                                max_input_val);
}
TYPED_TEST(InputBackpropWindow3Stride2, SAME3x5x8x1x1) {
  using DataType = typename TestFixture::DataType;
  const std::vector<DataType> exp_out = {
      4.,   5.,   14.,  10.,  24.,  15.,  34.,  20.,  12.,  18.,  44.,  28.,
      64.,  38.,  84.,  48.,  20.,  25.,  54.,  30.,  64.,  35.,  74.,  40.,
      44.,  58.,  124., 68.,  144., 78.,  164., 88.,  36.,  45.,  94.,  50.,
      104., 55.,  114., 60.,  52.,  65.,  134., 70.,  144., 75.,  154., 80.,
      108., 138., 284., 148., 304., 158., 324., 168., 68.,  85.,  174., 90.,
      184., 95.,  194., 100., 140., 178., 364., 188., 384., 198., 404., 208.,
      84.,  105., 214., 110., 224., 115., 234., 120., 100., 125., 254., 130.,
      264., 135., 274., 140., 204., 258., 524., 268., 544., 278., 564., 288.,
      116., 145., 294., 150., 304., 155., 314., 160., 236., 298., 604., 308.,
      624., 318., 644., 328., 132., 165., 334., 170., 344., 175., 354., 180.};
  const std::array<int, 4> in_shape = {{3, 5, 8, 1}};
  const int multiplier = 1;
  const auto padding = sycldnn::PaddingMode::SAME;
  const DataType max_input_val = 2048.0;
  this->run_input_backprop_test(exp_out, in_shape, multiplier, padding,
                                max_input_val);
}
TYPED_TEST(InputBackpropWindow3Stride2, VALID3x5x8x1x1) {
  using DataType = typename TestFixture::DataType;
  const std::vector<DataType> exp_out = {
      1.,   2.,   5.,   4.,   9.,   6.,   9.,   0.,   4.,   5.,   14.,  10.,
      24.,  15.,  18.,  0.,   11.,  16.,  40.,  26.,  60.,  36.,  45.,  0.,
      16.,  20.,  44.,  25.,  54.,  30.,  36.,  0.,   28.,  32.,  71.,  40.,
      87.,  48.,  54.,  0.,   7.,   14.,  29.,  16.,  33.,  18.,  27.,  0.,
      28.,  35.,  74.,  40.,  84.,  45.,  54.,  0.,   59.,  76.,  160., 86.,
      180., 96.,  117., 0.,   40.,  50.,  104., 55.,  114., 60.,  72.,  0.,
      70.,  80.,  167., 88.,  183., 96.,  108., 0.,   13.,  26.,  53.,  28.,
      57.,  30.,  45.,  0.,   52.,  65.,  134., 70.,  144., 75.,  90.,  0.,
      107., 136., 280., 146., 300., 156., 189., 0.,   64.,  80.,  164., 85.,
      174., 90.,  108., 0.,   112., 128., 263., 136., 279., 144., 162., 0.};
  const std::array<int, 4> in_shape = {{3, 5, 8, 1}};
  const int multiplier = 1;
  const auto padding = sycldnn::PaddingMode::VALID;
  const DataType max_input_val = 2048.0;
  this->run_input_backprop_test(exp_out, in_shape, multiplier, padding,
                                max_input_val);
}
TYPED_TEST(InputBackpropWindow3Stride2, SAME3x5x8x1x2) {
  using DataType = typename TestFixture::DataType;
  const std::vector<DataType> exp_out = {
      23.,   29.,   88.,   67.,   164.,  105.,  240.,  143.,  70.,   114.,
      288.,  190.,  440.,  266.,  592.,  342.,  143.,  181.,  392.,  219.,
      468.,  257.,  544.,  295.,  310.,  418.,  896.,  494.,  1048., 570.,
      1200., 646.,  263.,  333.,  696.,  371.,  772.,  409.,  848.,  447.,
      383.,  485.,  1000., 523.,  1076., 561.,  1152., 599.,  790.,  1026.,
      2112., 1102., 2264., 1178., 2416., 1254., 503.,  637.,  1304., 675.,
      1380., 713.,  1456., 751.,  1030., 1330., 2720., 1406., 2872., 1482.,
      3024., 1558., 623.,  789.,  1608., 827.,  1684., 865.,  1760., 903.,
      743.,  941.,  1912., 979.,  1988., 1017., 2064., 1055., 1510., 1938.,
      3936., 2014., 4088., 2090., 4240., 2166., 863.,  1093., 2216., 1131.,
      2292., 1169., 2368., 1207., 1750., 2242., 4544., 2318., 4696., 2394.,
      4848., 2470., 983.,  1245., 2520., 1283., 2596., 1321., 2672., 1359.};
  const std::array<int, 4> in_shape = {{3, 5, 8, 1}};
  const int multiplier = 2;
  const auto padding = sycldnn::PaddingMode::SAME;
  const DataType max_input_val = 2048.0;
  this->run_input_backprop_test(exp_out, in_shape, multiplier, padding,
                                max_input_val);
}
TYPED_TEST(InputBackpropWindow3Stride2, VALID3x5x8x1x2) {
  using DataType = typename TestFixture::DataType;
  const std::vector<DataType> exp_out = {
      5.,    11.,   28.,   25.,  56.,   39.,   61.,   0.,    23.,   29.,
      88.,   67.,   164.,  105., 127.,  0.,    64.,   100.,  260.,  176.,
      412.,  252.,  320.,  0.,   113.,  143.,  316.,  181.,  392.,  219.,
      265.,  0.,    203.,  233., 520.,  295.,  644.,  357.,  403.,  0.,
      41.,   95.,   196.,  109., 224.,  123.,  193.,  0.,    203.,  257.,
      544.,  295.,  620.,  333., 403.,  0.,    424.,  556.,  1172., 632.,
      1324., 708.,  872.,  0.,   293.,  371.,  772.,  409.,  848.,  447.,
      541.,  0.,    527.,  605., 1264., 667.,  1388., 729.,  823.,  0.,
      77.,   179.,  364.,  193., 392.,  207.,  325.,  0.,    383.,  485.,
      1000., 523.,  1076., 561., 679.,  0.,    784.,  1012., 2084., 1088.,
      2236., 1164., 1424., 0.,   473.,  599.,  1228., 637.,  1304., 675.,
      817.,  0.,    851.,  977., 2008., 1039., 2132., 1101., 1243., 0.};
  const std::array<int, 4> in_shape = {{3, 5, 8, 1}};
  const int multiplier = 2;
  const auto padding = sycldnn::PaddingMode::VALID;
  const DataType max_input_val = 2048.0;
  this->run_input_backprop_test(exp_out, in_shape, multiplier, padding,
                                max_input_val);
}
TYPED_TEST(InputBackpropWindow3Stride2, SAME3x5x8x1x4) {
  using DataType = typename TestFixture::DataType;
  const std::vector<DataType> exp_out = {
      150.,   190.,   612.,   486.,   1204.,  782.,   1796.,  1078.,  460.,
      796.,   2056.,  1388.,  3240.,  1980.,  4424.,  2572.,  1078.,  1374.,
      2980.,  1670.,  3572.,  1966.,  4164.,  2262.,  2316.,  3164.,  6792.,
      3756.,  7976.,  4348.,  9160.,  4940.,  2006.,  2558.,  5348.,  2854.,
      5940.,  3150.,  6532.,  3446.,  2934.,  3742.,  7716.,  4038.,  8308.,
      4334.,  8900.,  4630.,  6028.,  7900.,  16264., 8492.,  17448., 9084.,
      18632., 9676.,  3862.,  4926.,  10084., 5222.,  10676., 5518.,  11268.,
      5814.,  7884.,  10268., 21000., 10860., 22184., 11452., 23368., 12044.,
      4790.,  6110.,  12452., 6406.,  13044., 6702.,  13636., 6998.,  5718.,
      7294.,  14820., 7590.,  15412., 7886.,  16004., 8182.,  11596., 15004.,
      30472., 15596., 31656., 16188., 32840., 16780., 6646.,  8478.,  17188.,
      8774.,  17780., 9070.,  18372., 9366.,  13452., 17372., 35208., 17964.,
      36392., 18556., 37576., 19148., 7574.,  9662.,  19556., 9958.,  20148.,
      10254., 20740., 10550.};
  const std::array<int, 4> in_shape = {{3, 5, 8, 1}};
  const int multiplier = 4;
  const auto padding = sycldnn::PaddingMode::SAME;
  const DataType max_input_val = 2048.0;
  this->run_input_backprop_test(exp_out, in_shape, multiplier, padding,
                                max_input_val);
}
TYPED_TEST(InputBackpropWindow3Stride2, VALID3x5x8x1x4) {
  using DataType = typename TestFixture::DataType;
  const std::vector<DataType> exp_out = {
      30.,    70.,   180.,   174.,  388.,   278.,  446.,   0.,    150.,   190.,
      612.,   486.,  1204.,  782.,  950.,   0.,    420.,   692.,  1848.,  1284.,
      3032.,  1876., 2404.,  0.,    846.,   1078., 2388.,  1374., 2980.,  1670.,
      2030.,  0.,    1542.,  1774., 3972.,  2262., 4948.,  2750., 3110.,  0.,
      270.,   694.,  1428.,  798.,  1636.,  902.,  1454.,  0.,    1542.,  1966.,
      4164.,  2262., 4756.,  2558., 3110.,  0.,    3204.,  4244., 8952.,  4836.,
      10136., 5428., 6724.,  0.,    2238.,  2854., 5940.,  3150., 6532.,  3446.,
      4190.,  0.,    4086.,  4702., 9828.,  5190., 10804., 5678., 6422.,  0.,
      510.,   1318., 2676.,  1422., 2884.,  1526., 2462.,  0.,    2934.,  3742.,
      7716.,  4038., 8308.,  4334., 5270.,  0.,    5988.,  7796., 16056., 8388.,
      17240., 8980., 11044., 0.,    3630.,  4630., 9492.,  4926., 10084., 5222.,
      6350.,  0.,    6630.,  7630., 15684., 8118., 16660., 8606., 9734.,  0.};
  const std::array<int, 4> in_shape = {{3, 5, 8, 1}};
  const int multiplier = 4;
  const auto padding = sycldnn::PaddingMode::VALID;
  const DataType max_input_val = 2048.0;
  this->run_input_backprop_test(exp_out, in_shape, multiplier, padding,
                                max_input_val);
}
TYPED_TEST(InputBackpropWindow3Stride2, SAME3x5x8x2x1) {
  using DataType = typename TestFixture::DataType;
  const std::vector<DataType> exp_out = {
      7.,    16.,   9.,    20.,   32.,   56.,   27.,   40.,   68.,   96.,
      45.,   60.,   104.,  136.,  63.,   80.,   22.,   48.,   42.,   72.,
      112.,  176.,  78.,   112.,  184.,  256.,  114.,  152.,  256.,  336.,
      150.,  192.,  63.,   80.,   81.,   100.,  176.,  216.,  99.,   120.,
      212.,  256.,  117.,  140.,  248.,  296.,  135.,  160.,  134.,  176.,
      186.,  232.,  400.,  496.,  222.,  272.,  472.,  576.,  258.,  312.,
      544.,  656.,  294.,  352.,  119.,  144.,  153.,  180.,  320.,  376.,
      171.,  200.,  356.,  416.,  189.,  220.,  392.,  456.,  207.,  240.,
      175.,  208.,  225.,  260.,  464.,  536.,  243.,  280.,  500.,  576.,
      261.,  300.,  536.,  616.,  279.,  320.,  358.,  432.,  474.,  552.,
      976.,  1136., 510.,  592.,  1048., 1216., 546.,  632.,  1120., 1296.,
      582.,  672.,  231.,  272.,  297.,  340.,  608.,  696.,  315.,  360.,
      644.,  736.,  333.,  380.,  680.,  776.,  351.,  400.,  470.,  560.,
      618.,  712.,  1264., 1456., 654.,  752.,  1336., 1536., 690.,  792.,
      1408., 1616., 726.,  832.,  287.,  336.,  369.,  420.,  752.,  856.,
      387.,  440.,  788.,  896.,  405.,  460.,  824.,  936.,  423.,  480.,
      343.,  400.,  441.,  500.,  896.,  1016., 459.,  520.,  932.,  1056.,
      477.,  540.,  968.,  1096., 495.,  560.,  694.,  816.,  906.,  1032.,
      1840., 2096., 942.,  1072., 1912., 2176., 978.,  1112., 1984., 2256.,
      1014., 1152., 399.,  464.,  513.,  580.,  1040., 1176., 531.,  600.,
      1076., 1216., 549.,  620.,  1112., 1256., 567.,  640.,  806.,  944.,
      1050., 1192., 2128., 2416., 1086., 1232., 2200., 2496., 1122., 1272.,
      2272., 2576., 1158., 1312., 455.,  528.,  585.,  660.,  1184., 1336.,
      603.,  680.,  1220., 1376., 621.,  700.,  1256., 1416., 639.,  720.};
  const std::array<int, 4> in_shape = {{3, 5, 8, 2}};
  const int multiplier = 1;
  const auto padding = sycldnn::PaddingMode::SAME;
  const DataType max_input_val = 2048.0;
  this->run_input_backprop_test(exp_out, in_shape, multiplier, padding,
                                max_input_val);
}
TYPED_TEST(InputBackpropWindow3Stride2, VALID3x5x8x2x1) {
  using DataType = typename TestFixture::DataType;
  const std::vector<DataType> exp_out = {
      1.,   4.,    3.,    8.,    8.,   20.,  9.,   16.,  20.,  36.,   15.,
      24.,  25.,   36.,   0.,    0.,   7.,   16.,  9.,   20.,  32.,   56.,
      27.,  40.,   68.,   96.,   45.,  60.,  55.,  72.,  0.,   0.,    20.,
      44.,  36.,   64.,   100.,  160., 72.,  104., 172., 240., 108.,  144.,
      140., 180.,  0.,    0.,    49.,  64.,  63.,  80.,  140., 176.,  81.,
      100., 176.,  216.,  99.,   120., 121., 144., 0.,   0.,   91.,   112.,
      105., 128.,  236.,  284.,  135., 160., 296., 348., 165., 192.,  187.,
      216., 0.,    0.,    13.,   28.,  39.,  56.,  80.,  116., 45.,   64.,
      92.,  132.,  51.,   72.,   85.,  108., 0.,   0.,   91.,  112.,  117.,
      140., 248.,  296.,  135.,  160., 284., 336., 153., 180., 187.,  216.,
      0.,   0.,    188.,  236.,  252., 304., 532., 640., 288., 344.,  604.,
      720., 324.,  384.,  404.,  468., 0.,   0.,   133., 160., 171.,  200.,
      356., 416.,  189.,  220.,  392., 456., 207., 240., 253., 288.,  0.,
      0.,   247.,  280.,  285.,  320., 596., 668., 315., 352., 656.,  732.,
      345., 384.,  391.,  432.,  0.,   0.,   25.,  52.,  75.,  104.,  152.,
      212., 81.,   112.,  164.,  228., 87.,  120., 145., 180., 0.,    0.,
      175., 208.,  225.,  260.,  464., 536., 243., 280., 500., 576.,  261.,
      300., 319.,  360.,  0.,    0.,   356., 428., 468., 544., 964.,  1120.,
      504., 584.,  1036., 1200., 540., 624., 668., 756., 0.,   0.,    217.,
      256., 279.,  320.,  572.,  656., 297., 340., 608., 696., 315.,  360.,
      385., 432.,  0.,    0.,    403., 448., 465., 512., 956., 1052., 495.,
      544., 1016., 1116., 525.,  576., 595., 648., 0.,   0.};
  const std::array<int, 4> in_shape = {{3, 5, 8, 2}};
  const int multiplier = 1;
  const auto padding = sycldnn::PaddingMode::VALID;
  const DataType max_input_val = 2048.0;
  this->run_input_backprop_test(exp_out, in_shape, multiplier, padding,
                                max_input_val);
}
TYPED_TEST(InputBackpropWindow3Stride2, SAME3x5x8x2x2) {
  using DataType = typename TestFixture::DataType;
  const std::vector<DataType> exp_out = {
      41.,    109.,   53.,    137.,   214.,   398.,   193.,   293.,   494.,
      710.,   333.,   449.,   774.,   1022.,  473.,   605.,   130.,   330.,
      282.,   514.,   780.,   1276.,  562.,   826.,   1340.,  1900.,  842.,
      1138.,  1900.,  2524.,  1122.,  1450.,  473.,   605.,   613.,   761.,
      1334.,  1646.,  753.,   917.,   1614.,  1958.,  893.,   1073.,  1894.,
      2270.,  1033.,  1229.,  994.,   1322.,  1402.,  1762.,  3020.,  3772.,
      1682.,  2074.,  3580.,  4396.,  1962.,  2386.,  4140.,  5020.,  2242.,
      2698.,  905.,   1101.,  1173.,  1385.,  2454.,  2894.,  1313.,  1541.,
      2734.,  3206.,  1453.,  1697.,  3014.,  3518.,  1593.,  1853.,  1337.,
      1597.,  1733.,  2009.,  3574.,  4142.,  1873.,  2165.,  3854.,  4454.,
      2013.,  2321.,  4134.,  4766.,  2153.,  2477.,  2722.,  3306.,  3642.,
      4258.,  7500.,  8764.,  3922.,  4570.,  8060.,  9388.,  4202.,  4882.,
      8620.,  10012., 4482.,  5194.,  1769.,  2093.,  2293.,  2633.,  4694.,
      5390.,  2433.,  2789.,  4974.,  5702.,  2573.,  2945.,  5254.,  6014.,
      2713.,  3101.,  3586.,  4298.,  4762.,  5506.,  9740.,  11260., 5042.,
      5818.,  10300., 11884., 5322.,  6130.,  10860., 12508., 5602.,  6442.,
      2201.,  2589.,  2853.,  3257.,  5814.,  6638.,  2993.,  3413.,  6094.,
      6950.,  3133.,  3569.,  6374.,  7262.,  3273.,  3725.,  2633.,  3085.,
      3413.,  3881.,  6934.,  7886.,  3553.,  4037.,  7214.,  8198.,  3693.,
      4193.,  7494.,  8510.,  3833.,  4349.,  5314.,  6282.,  7002.,  8002.,
      14220., 16252., 7282.,  8314.,  14780., 16876., 7562.,  8626.,  15340.,
      17500., 7842.,  8938.,  3065.,  3581.,  3973.,  4505.,  8054.,  9134.,
      4113.,  4661.,  8334.,  9446.,  4253.,  4817.,  8614.,  9758.,  4393.,
      4973.,  6178.,  7274.,  8122.,  9250.,  16460., 18748., 8402.,  9562.,
      17020., 19372., 8682.,  9874.,  17580., 19996., 8962.,  10186., 3497.,
      4077.,  4533.,  5129.,  9174.,  10382., 4673.,  5285.,  9454.,  10694.,
      4813.,  5441.,  9734.,  11006., 4953.,  5597.};
  const std::array<int, 4> in_shape = {{3, 5, 8, 2}};
  const int multiplier = 2;
  const auto padding = sycldnn::PaddingMode::SAME;
  const DataType max_input_val = 2048.0;
  this->run_input_backprop_test(exp_out, in_shape, multiplier, padding,
                                max_input_val);
}
TYPED_TEST(InputBackpropWindow3Stride2, VALID3x5x8x2x2) {
  using DataType = typename TestFixture::DataType;
  const std::vector<DataType> exp_out = {
      5.,    25.,   17.,   53.,   46.,   134.,  61.,   113.,  134.,  254.,
      105.,  173.,  181.,  265.,  0.,    0.,    41.,   109.,  53.,   137.,
      214.,  398.,  193.,  293.,  494.,  710.,  333.,  449.,  409.,  541.,
      0.,    0.,    118.,  302.,  238.,  454.,  692.,  1156., 518.,  766.,
      1252., 1780., 798.,  1078., 1046., 1358., 0.,    0.,    365.,  481.,
      473.,  605.,  1054., 1334., 613.,  761.,  1334., 1646., 753.,  917.,
      925.,  1105., 0.,    0.,    689.,  853.,  797.,  977.,  1798., 2174.,
      1033., 1229., 2270., 2678., 1269., 1481., 1441., 1669., 0.,    0.,
      77.,   193.,  281.,  413.,  574.,  854.,  325.,  473.,  662.,  974.,
      369.,  533.,  637.,  817.,  0.,    0.,    689.,  853.,  893.,  1073.,
      1894., 2270., 1033., 1229., 2174., 2582., 1173., 1385., 1441., 1669.,
      0.,    0.,    1414., 1790., 1918., 2326., 4052., 4900., 2198., 2638.,
      4612., 5524., 2478., 2950., 3110., 3614., 0.,    0.,    1013., 1225.,
      1313., 1541., 2734., 3206., 1453., 1697., 3014., 3518., 1593., 1853.,
      1957., 2233., 0.,    0.,    1913., 2173., 2213., 2489., 4630., 5198.,
      2449., 2741., 5102., 5702., 2685., 2993., 3049., 3373., 0.,    0.,
      149.,  361.,  545.,  773.,  1102., 1574., 589.,  833.,  1190., 1694.,
      633.,  893.,  1093., 1369., 0.,    0.,    1337., 1597., 1733., 2009.,
      3574., 4142., 1873., 2165., 3854., 4454., 2013., 2321., 2473., 2797.,
      0.,    0.,    2710., 3278., 3598., 4198., 7412., 8644., 3878., 4510.,
      7972., 9268., 4158., 4822., 5174., 5870., 0.,    0.,    1661., 1969.,
      2153., 2477., 4414., 5078., 2293., 2633., 4694., 5390., 2433., 2789.,
      2989., 3361., 0.,    0.,    3137., 3493., 3629., 4001., 7462., 8222.,
      3865., 4253., 7934., 8726., 4101., 4505., 4657., 5077., 0.,    0.};
  const std::array<int, 4> in_shape = {{3, 5, 8, 2}};
  const int multiplier = 2;
  const auto padding = sycldnn::PaddingMode::VALID;
  const DataType max_input_val = 2048.0;
  this->run_input_backprop_test(exp_out, in_shape, multiplier, padding,
                                max_input_val);
}
TYPED_TEST(InputBackpropWindow3Stride2, SAME3x5x8x2x4) {
  using DataType = typename TestFixture::DataType;
  const std::vector<DataType> exp_out = {
      270.,    798.,    350.,   1006.,  1548.,   2988.,   1454.,  2238.,
      3756.,   5452.,   2558.,  3470.,  5964.,   7916.,   3662.,  4702.,
      860.,    2428.,   2044.,  3868.,  5784.,   9688.,   4252.,  6332.,
      10200.,  14616.,  6460.,  8796.,  14616.,  19544.,  8668.,  11260.,
      3662.,   4702.,   4766.,  5934.,  10380.,  12844.,  5870.,  7166.,
      12588.,  15308.,  6974.,  8398.,  14796.,  17772.,  8078.,  9630.,
      7644.,   10236.,  10876., 13724., 23448.,  29400.,  13084., 16188.,
      27864.,  34328.,  15292., 18652., 32280.,  39256.,  17500., 21116.,
      7054.,   8606.,   9182.,  10862., 19212.,  22700.,  10286., 12094.,
      21420.,  25164.,  11390., 13326., 23628.,  27628.,  12494., 14558.,
      10446.,  12510.,  13598., 15790., 28044.,  32556.,  14702., 17022.,
      30252.,  35020.,  15806., 18254., 32460.,  37484.,  16910., 19486.,
      21212.,  25852.,  28540., 33436., 58776.,  68824.,  30748., 35900.,
      63192.,  73752.,  32956., 38364., 67608.,  78680.,  35164., 40828.,
      13838.,  16414.,  18014., 20718., 36876.,  42412.,  19118., 21950.,
      39084.,  44876.,  20222., 23182., 41292.,  47340.,  21326., 24414.,
      27996.,  33660.,  37372., 43292., 76440.,  88536.,  39580., 45756.,
      80856.,  93464.,  41788., 48220., 85272.,  98392.,  43996., 50684.,
      17230.,  20318.,  22430., 25646., 45708.,  52268.,  23534., 26878.,
      47916.,  54732.,  24638., 28110., 50124.,  57196.,  25742., 29342.,
      20622.,  24222.,  26846., 30574., 54540.,  62124.,  27950., 31806.,
      56748.,  64588.,  29054., 33038., 58956.,  67052.,  30158., 34270.,
      41564.,  49276.,  55036., 63004., 111768., 127960., 57244., 65468.,
      116184., 132888., 59452., 67932., 120600., 137816., 61660., 70396.,
      24014.,  28126.,  31262., 35502., 63372.,  71980.,  32366., 36734.,
      65580.,  74444.,  33470., 37966., 67788.,  76908.,  34574., 39198.,
      48348.,  57084.,  63868., 72860., 129432., 147672., 66076., 75324.,
      133848., 152600., 68284., 77788., 138264., 157528., 70492., 80252.,
      27406.,  32030.,  35678., 40430., 72204.,  81836.,  36782., 41662.,
      74412.,  84300.,  37886., 42894., 76620.,  86764.,  38990., 44126.};
  const std::array<int, 4> in_shape = {{3, 5, 8, 2}};
  const int multiplier = 4;
  const auto padding = sycldnn::PaddingMode::SAME;
  const DataType max_input_val = 2048.0;
  this->run_input_backprop_test(exp_out, in_shape, multiplier, padding,
                                max_input_val);
}
TYPED_TEST(InputBackpropWindow3Stride2, VALID3x5x8x2x4) {
  using DataType = typename TestFixture::DataType;
  const std::vector<DataType> exp_out = {
      30.,    174.,   110.,   382.,   300.,   972.,   446.,   846.,   972.,
      1900.,  782.,   1310.,  1374.,  2030.,  0.,     0.,     270.,   798.,
      350.,   1006.,  1548.,  2988.,  1454.,  2238.,  3756.,  5452.,  2558.,
      3470.,  3150.,  4190.,  0.,     0.,     780.,   2220.,  1708.,  3404.,
      5112.,  8760.,  3916.,  5868.,  9528.,  13688., 6124.,  8332.,  8076.,
      10540., 0.,     0.,     2814.,  3726.,  3662.,  4702.,  8172.,  10380.,
      4766.,  5934.,  10380., 12844., 5870.,  7166.,  7230.,  8654.,  0.,
      0.,     5358.,  6654.,  6206.,  7630.,  14028., 17004., 8078.,  9630.,
      17772., 21004., 9950.,  11630., 11310., 13118., 0.,     0.,     510.,
      1422.,  2126.,  3166.,  4332.,  6540.,  2462.,  3630.,  5004.,  7468.,
      2798.,  4094.,  4926.,  6350.,  0.,     0.,     5358.,  6654.,  6974.,
      8398.,  14796., 17772., 8078.,  9630.,  17004., 20236., 9182.,  10862.,
      11310., 13118., 0.,     0.,     10956., 13932., 14956., 18188., 31608.,
      38328., 17164., 20652., 36024., 43256., 19372., 23116., 24396., 28396.,
      0.,     0.,     7902.,  9582.,  10286., 12094., 21420., 25164., 11390.,
      13326., 23628., 27628., 12494., 14558., 15390., 17582., 0.,     0.,
      15054., 17118., 17438., 19630., 36492., 41004., 19310., 21630., 40236.,
      45004., 21182., 23630., 24078., 26654., 0.,     0.,     990.,   2670.,
      4142.,  5950.,  8364.,  12108., 4478.,  6414.,  9036.,  13036., 4814.,
      6878.,  8478.,  10670., 0.,     0.,     10446., 12510., 13598., 15790.,
      28044., 32556., 14702., 17022., 30252., 35020., 15806., 18254., 19470.,
      22046., 0.,     0.,     21132., 25644., 28204., 32972., 58104., 67896.,
      30412., 35436., 62520., 72824., 32620., 37900., 40716., 46252., 0.,
      0.,     12990., 15438., 16910., 19486., 34668., 39948., 18014., 20718.,
      36876., 42412., 19118., 21950., 23550., 26510., 0.,     0.,     24750.,
      27582., 28670., 31630., 58956., 65004., 30542., 33630., 62700., 69004.,
      32414., 35630., 36846., 40190., 0.,     0.};
  const std::array<int, 4> in_shape = {{3, 5, 8, 2}};
  const int multiplier = 4;
  const auto padding = sycldnn::PaddingMode::VALID;
  const DataType max_input_val = 2048.0;
  this->run_input_backprop_test(exp_out, in_shape, multiplier, padding,
                                max_input_val);
}
TYPED_TEST(InputBackpropWindow3Stride2, SAME3x5x8x4x1) {
  using DataType = typename TestFixture::DataType;
  const std::vector<DataType> exp_out = {
      13.,   28.,   45.,   64.,    17.,   36.,   57.,   80.,   86.,   128.,
      174.,  224.,  85.,   108.,   133.,  160.,  222.,  272.,  326.,  384.,
      153.,  180.,  209.,  240.,   358.,  416.,  478.,  544.,  221.,  252.,
      285.,  320.,  42.,   88.,    138.,  192.,  114.,  168.,  226.,  288.,
      332.,  448.,  572.,  704.,   250.,  312.,  378.,  448.,  604.,  736.,
      876.,  1024., 386.,  456.,   530.,  608.,  876.,  1024., 1180., 1344.,
      522.,  600.,  682.,  768.,   221.,  252.,  285.,  320.,  289.,  324.,
      361.,  400.,  630.,  704.,   782.,  864.,  357.,  396.,  437.,  480.,
      766.,  848.,  934.,  1024.,  425.,  468.,  513.,  560.,  902.,  992.,
      1086., 1184., 493.,  540.,   589.,  640.,  458.,  536.,  618.,  704.,
      658.,  744.,  834.,  928.,   1420., 1600., 1788., 1984., 794.,  888.,
      986.,  1088., 1692., 1888.,  2092., 2304., 930.,  1032., 1138., 1248.,
      1964., 2176., 2396., 2624.,  1066., 1176., 1290., 1408., 429.,  476.,
      525.,  576.,  561.,  612.,   665.,  720.,  1174., 1280., 1390., 1504.,
      629.,  684.,  741.,  800.,   1310., 1424., 1542., 1664., 697.,  756.,
      817.,  880.,  1446., 1568.,  1694., 1824., 765.,  828.,  893.,  960.,
      637.,  700.,  765.,  832.,   833.,  900.,  969.,  1040., 1718., 1856.,
      1998., 2144., 901.,  972.,   1045., 1120., 1854., 2000., 2150., 2304.,
      969.,  1044., 1121., 1200.,  1990., 2144., 2302., 2464., 1037., 1116.,
      1197., 1280., 1290., 1432.,  1578., 1728., 1746., 1896., 2050., 2208.,
      3596., 3904., 4220., 4544.,  1882., 2040., 2202., 2368., 3868., 4192.,
      4524., 4864., 2018., 2184.,  2354., 2528., 4140., 4480., 4828., 5184.,
      2154., 2328., 2506., 2688.,  845.,  924.,  1005., 1088., 1105., 1188.,
      1273., 1360., 2262., 2432.,  2606., 2784., 1173., 1260., 1349., 1440.,
      2398., 2576., 2758., 2944.,  1241., 1332., 1425., 1520., 2534., 2720.,
      2910., 3104., 1309., 1404.,  1501., 1600., 1706., 1880., 2058., 2240.,
      2290., 2472., 2658., 2848.,  4684., 5056., 5436., 5824., 2426., 2616.,
      2810., 3008., 4956., 5344.,  5740., 6144., 2562., 2760., 2962., 3168.,
      5228., 5632., 6044., 6464.,  2698., 2904., 3114., 3328., 1053., 1148.,
      1245., 1344., 1377., 1476.,  1577., 1680., 2806., 3008., 3214., 3424.,
      1445., 1548., 1653., 1760.,  2942., 3152., 3366., 3584., 1513., 1620.,
      1729., 1840., 3078., 3296.,  3518., 3744., 1581., 1692., 1805., 1920.,
      1261., 1372., 1485., 1600.,  1649., 1764., 1881., 2000., 3350., 3584.,
      3822., 4064., 1717., 1836.,  1957., 2080., 3486., 3728., 3974., 4224.,
      1785., 1908., 2033., 2160.,  3622., 3872., 4126., 4384., 1853., 1980.,
      2109., 2240., 2538., 2776.,  3018., 3264., 3378., 3624., 3874., 4128.,
      6860., 7360., 7868., 8384.,  3514., 3768., 4026., 4288., 7132., 7648.,
      8172., 8704., 3650., 3912.,  4178., 4448., 7404., 7936., 8476., 9024.,
      3786., 4056., 4330., 4608.,  1469., 1596., 1725., 1856., 1921., 2052.,
      2185., 2320., 3894., 4160.,  4430., 4704., 1989., 2124., 2261., 2400.,
      4030., 4304., 4582., 4864.,  2057., 2196., 2337., 2480., 4166., 4448.,
      4734., 5024., 2125., 2268.,  2413., 2560., 2954., 3224., 3498., 3776.,
      3922., 4200., 4482., 4768.,  7948., 8512., 9084., 9664., 4058., 4344.,
      4634., 4928., 8220., 8800.,  9388., 9984., 4194., 4488., 4786., 5088.,
      8492., 9088., 9692., 10304., 4330., 4632., 4938., 5248., 1677., 1820.,
      1965., 2112., 2193., 2340.,  2489., 2640., 4438., 4736., 5038., 5344.,
      2261., 2412., 2565., 2720.,  4574., 4880., 5190., 5504., 2329., 2484.,
      2641., 2800., 4710., 5024.,  5342., 5664., 2397., 2556., 2717., 2880.};
  const std::array<int, 4> in_shape = {{3, 5, 8, 4}};
  const int multiplier = 1;
  const auto padding = sycldnn::PaddingMode::SAME;
  const DataType max_input_val = 2048.0;
  this->run_input_backprop_test(exp_out, in_shape, multiplier, padding,
                                max_input_val);
}
TYPED_TEST(InputBackpropWindow3Stride2, VALID3x5x8x4x1) {
  using DataType = typename TestFixture::DataType;
  const std::vector<DataType> exp_out = {
      1.,    4.,    9.,    16.,   5.,    12.,   21.,   32.,   14.,   32.,
      54.,   80.,   25.,   36.,   49.,   64.,   54.,   80.,   110.,  144.,
      45.,   60.,   77.,   96.,   81.,   100.,  121.,  144.,  0.,    0.,
      0.,    0.,    13.,   28.,   45.,   64.,   17.,   36.,   57.,   80.,
      86.,   128.,  174.,  224.,  85.,   108.,  133.,  160.,  222.,  272.,
      326.,  384.,  153.,  180.,  209.,  240.,  189.,  220.,  253.,  288.,
      0.,    0.,    0.,    0.,    38.,   80.,   126.,  176.,  94.,   144.,
      198.,  256.,  292.,  400.,  516.,  640.,  230.,  288.,  350.,  416.,
      564.,  688.,  820.,  960.,  366.,  432.,  502.,  576.,  486.,  560.,
      638.,  720.,  0.,    0.,    0.,    0.,    169.,  196.,  225.,  256.,
      221.,  252.,  285.,  320.,  494.,  560.,  630.,  704.,  289.,  324.,
      361.,  400.,  630.,  704.,  782.,  864.,  357.,  396.,  437.,  480.,
      441.,  484.,  529.,  576.,  0.,    0.,    0.,    0.,    325.,  364.,
      405.,  448.,  377.,  420.,  465.,  512.,  854.,  944.,  1038., 1136.,
      493.,  540.,  589.,  640.,  1086., 1184., 1286., 1392., 609.,  660.,
      713.,  768.,  693.,  748.,  805.,  864.,  0.,    0.,    0.,    0.,
      25.,   52.,   81.,   112.,  125.,  156.,  189.,  224.,  254.,  320.,
      390.,  464.,  145.,  180.,  217.,  256.,  294.,  368.,  446.,  528.,
      165.,  204.,  245.,  288.,  297.,  340.,  385.,  432.,  0.,    0.,
      0.,    0.,    325.,  364.,  405.,  448.,  425.,  468.,  513.,  560.,
      902.,  992.,  1086., 1184., 493.,  540.,  589.,  640.,  1038., 1136.,
      1238., 1344., 561.,  612.,  665.,  720.,  693.,  748.,  805.,  864.,
      0.,    0.,    0.,    0.,    662.,  752.,  846.,  944.,  910.,  1008.,
      1110., 1216., 1924., 2128., 2340., 2560., 1046., 1152., 1262., 1376.,
      2196., 2416., 2644., 2880., 1182., 1296., 1414., 1536., 1494., 1616.,
      1742., 1872., 0.,    0.,    0.,    0.,    481.,  532.,  585.,  640.,
      629.,  684.,  741.,  800.,  1310., 1424., 1542., 1664., 697.,  756.,
      817.,  880.,  1446., 1568., 1694., 1824., 765.,  828.,  893.,  960.,
      945.,  1012., 1081., 1152., 0.,    0.,    0.,    0.,    925.,  988.,
      1053., 1120., 1073., 1140., 1209., 1280., 2246., 2384., 2526., 2672.,
      1189., 1260., 1333., 1408., 2478., 2624., 2774., 2928., 1305., 1380.,
      1457., 1536., 1485., 1564., 1645., 1728., 0.,    0.,    0.,    0.,
      49.,   100.,  153.,  208.,  245.,  300.,  357.,  416.,  494.,  608.,
      726.,  848.,  265.,  324.,  385.,  448.,  534.,  656.,  782.,  912.,
      285.,  348.,  413.,  480.,  513.,  580.,  649.,  720.,  0.,    0.,
      0.,    0.,    637.,  700.,  765.,  832.,  833.,  900.,  969.,  1040.,
      1718., 1856., 1998., 2144., 901.,  972.,  1045., 1120., 1854., 2000.,
      2150., 2304., 969.,  1044., 1121., 1200., 1197., 1276., 1357., 1440.,
      0.,    0.,    0.,    0.,    1286., 1424., 1566., 1712., 1726., 1872.,
      2022., 2176., 3556., 3856., 4164., 4480., 1862., 2016., 2174., 2336.,
      3828., 4144., 4468., 4800., 1998., 2160., 2326., 2496., 2502., 2672.,
      2846., 3024., 0.,    0.,    0.,    0.,    793.,  868.,  945.,  1024.,
      1037., 1116., 1197., 1280., 2126., 2288., 2454., 2624., 1105., 1188.,
      1273., 1360., 2262., 2432., 2606., 2784., 1173., 1260., 1349., 1440.,
      1449., 1540., 1633., 1728., 0.,    0.,    0.,    0.,    1525., 1612.,
      1701., 1792., 1769., 1860., 1953., 2048., 3638., 3824., 4014., 4208.,
      1885., 1980., 2077., 2176., 3870., 4064., 4262., 4464., 2001., 2100.,
      2201., 2304., 2277., 2380., 2485., 2592., 0.,    0.,    0.,    0.};
  const std::array<int, 4> in_shape = {{3, 5, 8, 4}};
  const int multiplier = 1;
  const auto padding = sycldnn::PaddingMode::VALID;
  const DataType max_input_val = 2048.0;
  this->run_input_backprop_test(exp_out, in_shape, multiplier, padding,
                                max_input_val);
}
TYPED_TEST(InputBackpropWindow3Stride2, SAME3x5x8x4x2) {
  using DataType = typename TestFixture::DataType;
  const std::vector<DataType> exp_out = {
      77.,    193.,   325.,   473.,   101.,   249.,   413.,   593.,   610.,
      938.,   1298.,  1690.,  637.,   817.,   1013.,  1225.,  1682.,  2074.,
      2498.,  2954.,  1173.,  1385.,  1613.,  1857.,  2754.,  3210.,  3698.,
      4218.,  1709.,  1953.,  2213.,  2489.,  250.,   610.,   1002.,  1426.,
      810.,   1234.,  1690.,  2178.,  2436.,  3348.,  4324.,  5364.,  1882.,
      2370.,  2890.,  3442.,  4580.,  5620.,  6724.,  7892.,  2954.,  3506.,
      4090.,  4706.,  6724.,  7892.,  9124.,  10420., 4026.,  4642.,  5290.,
      5970.,  1709.,  1953.,  2213.,  2489.,  2245.,  2521.,  2813.,  3121.,
      4898.,  5482.,  6098.,  6746.,  2781.,  3089.,  3413.,  3753.,  5970.,
      6618.,  7298.,  8010.,  3317.,  3657.,  4013.,  4385.,  7042.,  7754.,
      8498.,  9274.,  3853.,  4225.,  4613.,  5017.,  3514.,  4130.,  4778.,
      5458.,  5098.,  5778.,  6490.,  7234.,  11012., 12436., 13924., 15476.,
      6170.,  6914.,  7690.,  8498.,  13156., 14708., 16324., 18004., 7242.,
      8050.,  8890.,  9762.,  15300., 16980., 18724., 20532., 8314.,  9186.,
      10090., 11026., 3341.,  3713.,  4101.,  4505.,  4389.,  4793.,  5213.,
      5649.,  9186.,  10026., 10898., 11802., 4925.,  5361.,  5813.,  6281.,
      10258., 11162., 12098., 13066., 5461.,  5929.,  6413.,  6913.,  11330.,
      12298., 13298., 14330., 5997.,  6497.,  7013.,  7545.,  4973.,  5473.,
      5989.,  6521.,  6533.,  7065.,  7613.,  8177.,  13474., 14570., 15698.,
      16858., 7069.,  7633.,  8213.,  8809.,  14546., 15706., 16898., 18122.,
      7605.,  8201.,  8813.,  9441.,  15618., 16842., 18098., 19386., 8141.,
      8769.,  9413.,  10073., 10042., 11170., 12330., 13522., 13674., 14866.,
      16090., 17346., 28164., 30612., 33124., 35700., 14746., 16002., 17290.,
      18610., 30308., 32884., 35524., 38228., 15818., 17138., 18490., 19874.,
      32452., 35156., 37924., 40756., 16890., 18274., 19690., 21138., 6605.,
      7233.,  7877.,  8537.,  8677.,  9337.,  10013., 10705., 17762., 19114.,
      20498., 21914., 9213.,  9905.,  10613., 11337., 18834., 20250., 21698.,
      23178., 9749.,  10473., 11213., 11969., 19906., 21386., 22898., 24442.,
      10285., 11041., 11813., 12601., 13306., 14690., 16106., 17554., 17962.,
      19410., 20890., 22402., 36740., 39700., 42724., 45812., 19034., 20546.,
      22090., 23666., 38884., 41972., 45124., 48340., 20106., 21682., 23290.,
      24930., 41028., 44244., 47524., 50868., 21178., 22818., 24490., 26194.,
      8237.,  8993.,  9765.,  10553., 10821., 11609., 12413., 13233., 22050.,
      23658., 25298., 26970., 11357., 12177., 13013., 13865., 23122., 24794.,
      26498., 28234., 11893., 12745., 13613., 14497., 24194., 25930., 27698.,
      29498., 12429., 13313., 14213., 15129., 9869.,  10753., 11653., 12569.,
      12965., 13881., 14813., 15761., 26338., 28202., 30098., 32026., 13501.,
      14449., 15413., 16393., 27410., 29338., 31298., 33290., 14037., 15017.,
      16013., 17025., 28482., 30474., 32498., 34554., 14573., 15585., 16613.,
      17657., 19834., 21730., 23658., 25618., 26538., 28498., 30490., 32514.,
      53892., 57876., 61924., 66036., 27610., 29634., 31690., 33778., 56036.,
      60148., 64324., 68564., 28682., 30770., 32890., 35042., 58180., 62420.,
      66724., 71092., 29754., 31906., 34090., 36306., 11501., 12513., 13541.,
      14585., 15109., 16153., 17213., 18289., 30626., 32746., 34898., 37082.,
      15645., 16721., 17813., 18921., 31698., 33882., 36098., 38346., 16181.,
      17289., 18413., 19553., 32770., 35018., 37298., 39610., 16717., 17857.,
      19013., 20185., 23098., 25250., 27434., 29650., 30826., 33042., 35290.,
      37570., 62468., 66964., 71524., 76148., 31898., 34178., 36490., 38834.,
      64612., 69236., 73924., 78676., 32970., 35314., 37690., 40098., 66756.,
      71508., 76324., 81204., 34042., 36450., 38890., 41362., 13133., 14273.,
      15429., 16601., 17253., 18425., 19613., 20817., 34914., 37290., 39698.,
      42138., 17789., 18993., 20213., 21449., 35986., 38426., 40898., 43402.,
      18325., 19561., 20813., 22081., 37058., 39562., 42098., 44666., 18861.,
      20129., 21413., 22713.};
  const std::array<int, 4> in_shape = {{3, 5, 8, 4}};
  const int multiplier = 2;
  const auto padding = sycldnn::PaddingMode::SAME;
  const DataType max_input_val = 2048.0;
  this->run_input_backprop_test(exp_out, in_shape, multiplier, padding,
                                max_input_val);
}
TYPED_TEST(InputBackpropWindow3Stride2, VALID3x5x8x4x2) {
  using DataType = typename TestFixture::DataType;
  const std::vector<DataType> exp_out = {
      5.,     25.,    61.,    113.,   29.,    81.,    149.,   233.,   82.,
      218.,   386.,   586.,   181.,   265.,   365.,   481.,   386.,   586.,
      818.,   1082.,  333.,   449.,   581.,   729.,   613.,   761.,   925.,
      1105.,  0.,     0.,     0.,     0.,     77.,    193.,   325.,   473.,
      101.,   249.,   413.,   593.,   610.,   938.,   1298.,  1690.,  637.,
      817.,   1013.,  1225.,  1682.,  2074.,  2498.,  2954.,  1173.,  1385.,
      1613.,  1857.,  1453.,  1697.,  1957.,  2233.,  0.,     0.,     0.,
      0.,     226.,   554.,   914.,   1306.,  658.,   1050.,  1474.,  1930.,
      2132.,  2980.,  3892.,  4868.,  1730.,  2186.,  2674.,  3194.,  4276.,
      5252.,  6292.,  7396.,  2802.,  3322.,  3874.,  4458.,  3746.,  4330.,
      4946.,  5594.,  0.,     0.,     0.,     0.,     1301.,  1513.,  1741.,
      1985.,  1709.,  1953.,  2213.,  2489.,  3826.,  4346.,  4898.,  5482.,
      2245.,  2521.,  2813.,  3121.,  4898.,  5482.,  6098.,  6746.,  2781.,
      3089.,  3413.,  3753.,  3445.,  3785.,  4141.,  4513.,  0.,     0.,
      0.,     0.,     2525.,  2833.,  3157.,  3497.,  2933.,  3273.,  3629.,
      4001.,  6658.,  7370.,  8114.,  8890.,  3853.,  4225.,  4613.,  5017.,
      8498.,  9274.,  10082., 10922., 4773.,  5177.,  5597.,  6033.,  5437.,
      5873.,  6325.,  6793.,  0.,     0.,     0.,     0.,     149.,   361.,
      589.,   833.,   941.,   1185.,  1445.,  1721.,  1906.,  2426.,  2978.,
      3562.,  1093.,  1369.,  1661.,  1969.,  2210.,  2794.,  3410.,  4058.,
      1245.,  1553.,  1877.,  2217.,  2293.,  2633.,  2989.,  3361.,  0.,
      0.,     0.,     0.,     2525.,  2833.,  3157.,  3497.,  3317.,  3657.,
      4013.,  4385.,  7042.,  7754.,  8498.,  9274.,  3853.,  4225.,  4613.,
      5017.,  8114.,  8890.,  9698.,  10538., 4389.,  4793.,  5213.,  5649.,
      5437.,  5873.,  6325.,  6793.,  0.,     0.,     0.,     0.,     5122.,
      5834.,  6578.,  7354.,  7090.,  7866.,  8674.,  9514.,  14996., 16612.,
      18292., 20036., 8162.,  9002.,  9874.,  10778., 17140., 18884., 20692.,
      22564., 9234.,  10138., 11074., 12042., 11714., 12682., 13682., 14714.,
      0.,     0.,     0.,     0.,     3749.,  4153.,  4573.,  5009.,  4925.,
      5361.,  5813.,  6281.,  10258., 11162., 12098., 13066., 5461.,  5929.,
      6413.,  6913.,  11330., 12298., 13298., 14330., 5997.,  6497.,  7013.,
      7545.,  7429.,  7961.,  8509.,  9073.,  0.,     0.,     0.,     0.,
      7277.,  7777.,  8293.,  8825.,  8453.,  8985.,  9533.,  10097., 17698.,
      18794., 19922., 21082., 9373.,  9937.,  10517., 11113., 19538., 20698.,
      21890., 23114., 10293., 10889., 11501., 12129., 11725., 12353., 12997.,
      13657., 0.,     0.,     0.,     0.,     293.,   697.,   1117.,  1553.,
      1853.,  2289.,  2741.,  3209.,  3730.,  4634.,  5570.,  6538.,  2005.,
      2473.,  2957.,  3457.,  4034.,  5002.,  6002.,  7034.,  2157.,  2657.,
      3173.,  3705.,  3973.,  4505.,  5053.,  5617.,  0.,     0.,     0.,
      0.,     4973.,  5473.,  5989.,  6521.,  6533.,  7065.,  7613.,  8177.,
      13474., 14570., 15698., 16858., 7069.,  7633.,  8213.,  8809.,  14546.,
      15706., 16898., 18122., 7605.,  8201.,  8813.,  9441.,  9421.,  10049.,
      10693., 11353., 0.,     0.,     0.,     0.,     10018., 11114., 12242.,
      13402., 13522., 14682., 15874., 17098., 27860., 30244., 32692., 35204.,
      14594., 15818., 17074., 18362., 30004., 32516., 35092., 37732., 15666.,
      16954., 18274., 19626., 19682., 21034., 22418., 23834., 0.,     0.,
      0.,     0.,     6197.,  6793.,  7405.,  8033.,  8141.,  8769.,  9413.,
      10073., 16690., 17978., 19298., 20650., 8677.,  9337.,  10013., 10705.,
      17762., 19114., 20498., 21914., 9213.,  9905.,  10613., 11337., 11413.,
      12137., 12877., 13633., 0.,     0.,     0.,     0.,     12029., 12721.,
      13429., 14153., 13973., 14697., 15437., 16193., 28738., 30218., 31730.,
      33274., 14893., 15649., 16421., 17209., 30578., 32122., 33698., 35306.,
      15813., 16601., 17405., 18225., 18013., 18833., 19669., 20521., 0.,
      0.,     0.,     0.};
  const std::array<int, 4> in_shape = {{3, 5, 8, 4}};
  const int multiplier = 2;
  const auto padding = sycldnn::PaddingMode::VALID;
  const DataType max_input_val = 2048.0;
  this->run_input_backprop_test(exp_out, in_shape, multiplier, padding,
                                max_input_val);
}
TYPED_TEST(InputBackpropWindow3Stride2, SAME3x5x8x4x4) {
  using DataType = typename TestFixture::DataType;
  const std::vector<DataType> exp_out = {
      510.,    1422.,   2462.,   3630.,   670.,    1838.,   3134.,   4558.,
      4572.,   7164.,   10012.,  13116.,  4926.,   6350.,   7902.,   9582.,
      13084.,  16188.,  19548.,  23164.,  9182.,   10862.,  12670.,  14606.,
      21596.,  25212.,  29084.,  33212.,  13438.,  15374.,  17438.,  19630.,
      1660.,   4508.,   7612.,   10972.,  6076.,   9436.,   13052.,  16924.,
      18616.,  25848.,  33592.,  41848.,  14588.,  18460.,  22588.,  26972.,
      35640.,  43896.,  52664.,  61944.,  23100.,  27484.,  32124.,  37020.,
      52664.,  61944.,  71736.,  82040.,  31612.,  36508.,  41660.,  47068.,
      13438.,  15374.,  17438.,  19630.,  17694.,  19886.,  22206.,  24654.,
      38620.,  43260.,  48156.,  53308.,  21950.,  24398.,  26974.,  29678.,
      47132.,  52284.,  57692.,  63356.,  26206.,  28910.,  31742.,  34702.,
      55644.,  61308.,  67228.,  73404.,  30462.,  33422.,  36510.,  39726.,
      27516.,  32412.,  37564.,  42972.,  40124.,  45532.,  51196.,  57116.,
      86712.,  98040.,  109880., 122232., 48636.,  54556.,  60732.,  67164.,
      103736., 116088., 128952., 142328., 57148.,  63580.,  70268.,  77212.,
      120760., 134136., 148024., 162424., 65660.,  72604.,  79804.,  87260.,
      26366.,  29326.,  32414.,  35630.,  34718.,  37934.,  41278.,  44750.,
      72668.,  79356.,  86300.,  93500.,  38974.,  42446.,  46046.,  49774.,
      81180.,  88380.,  95836.,  103548., 43230.,  46958.,  50814.,  54798.,
      89692.,  97404.,  105372., 113596., 47486.,  51470.,  55582.,  59822.,
      39294.,  43278.,  47390.,  51630.,  51742.,  55982.,  60350.,  64846.,
      106716., 115452., 124444., 133692., 55998.,  60494.,  65118.,  69870.,
      115228., 124476., 133980., 143740., 60254.,  65006.,  69886.,  74894.,
      123740., 133500., 143516., 153788., 64510.,  69518.,  74654.,  79918.,
      79228.,  88220.,  97468.,  106972., 108220., 117724., 127484., 137500.,
      222904., 242424., 262456., 283000., 116732., 126748., 137020., 147548.,
      239928., 260472., 281528., 303096., 125244., 135772., 146556., 157596.,
      256952., 278520., 300600., 323192., 133756., 144796., 156092., 167644.,
      52222.,  57230.,  62366.,  67630.,  68766.,  74030.,  79422.,  84942.,
      140764., 151548., 162588., 173884., 73022.,  78542.,  84190.,  89966.,
      149276., 160572., 172124., 183932., 77278.,  83054.,  88958.,  94990.,
      157788., 169596., 181660., 193980., 81534.,  87566.,  93726.,  100014.,
      105084., 116124., 127420., 138972., 142268., 153820., 165628., 177692.,
      291000., 314616., 338744., 363384., 150780., 162844., 175164., 187740.,
      308024., 332664., 357816., 383480., 159292., 171868., 184700., 197788.,
      325048., 350712., 376888., 403576., 167804., 180892., 194236., 207836.,
      65150.,  71182.,  77342.,  83630.,  85790.,  92078.,  98494.,  105038.,
      174812., 187644., 200732., 214076., 90046.,  96590.,  103262., 110062.,
      183324., 196668., 210268., 224124., 94302.,  101102., 108030., 115086.,
      191836., 205692., 219804., 234172., 98558.,  105614., 112798., 120110.,
      78078.,  85134.,  92318.,  99630.,  102814., 110126., 117566., 125134.,
      208860., 223740., 238876., 254268., 107070., 114638., 122334., 130158.,
      217372., 232764., 248412., 264316., 111326., 119150., 127102., 135182.,
      225884., 241788., 257948., 274364., 115582., 123662., 131870., 140206.,
      156796., 171932., 187324., 202972., 210364., 226012., 241916., 258076.,
      427192., 459000., 491320., 524152., 218876., 235036., 251452., 268124.,
      444216., 477048., 510392., 544248., 227388., 244060., 260988., 278172.,
      461240., 495096., 529464., 564344., 235900., 253084., 270524., 288220.,
      91006.,  99086.,  107294., 115630., 119838., 128174., 136638., 145230.,
      242908., 259836., 277020., 294460., 124094., 132686., 141406., 150254.,
      251420., 268860., 286556., 304508., 128350., 137198., 146174., 155278.,
      259932., 277884., 296092., 314556., 132606., 141710., 150942., 160302.,
      182652., 199836., 217276., 234972., 244412., 262108., 280060., 298268.,
      495288., 531192., 567608., 604536., 252924., 271132., 289596., 308316.,
      512312., 549240., 586680., 624632., 261436., 280156., 299132., 318364.,
      529336., 567288., 605752., 644728., 269948., 289180., 308668., 328412.,
      103934., 113038., 122270., 131630., 136862., 146222., 155710., 165326.,
      276956., 295932., 315164., 334652., 141118., 150734., 160478., 170350.,
      285468., 304956., 324700., 344700., 145374., 155246., 165246., 175374.,
      293980., 313980., 334236., 354748., 149630., 159758., 170014., 180398.};
  const std::array<int, 4> in_shape = {{3, 5, 8, 4}};
  const int multiplier = 4;
  const auto padding = sycldnn::PaddingMode::SAME;
  const DataType max_input_val = 2048.0;
  this->run_input_backprop_test(exp_out, in_shape, multiplier, padding,
                                max_input_val);
}
TYPED_TEST(InputBackpropWindow3Stride2, VALID3x5x8x4x4) {
  using DataType = typename TestFixture::DataType;
  const std::vector<DataType> exp_out = {
      30.,     174.,    446.,    846.,    190.,    590.,    1118.,   1774.,
      540.,    1596.,   2908.,   4476.,   1374.,   2030.,   2814.,   3726.,
      2908.,   4476.,   6300.,   8380.,   2558.,   3470.,   4510.,   5678.,
      4766.,   5934.,   7230.,   8654.,   0.,      0.,      0.,      0.,
      510.,    1422.,   2462.,   3630.,   670.,    1838.,   3134.,   4558.,
      4572.,   7164.,   10012.,  13116.,  4926.,   6350.,   7902.,   9582.,
      13084.,  16188.,  19548.,  23164.,  9182.,   10862.,  12670.,  14606.,
      11390.,  13326.,  15390.,  17582.,  0.,      0.,      0.,      0.,
      1500.,   4092.,   6940.,   10044.,  4892.,   7996.,   11356.,  14972.,
      16248.,  22968.,  30200.,  37944.,  13404.,  17020.,  20892.,  25020.,
      33272.,  41016.,  49272.,  58040.,  21916.,  26044.,  30428.,  35068.,
      29404.,  34044.,  38940.,  44092.,  0.,      0.,      0.,      0.,
      10206.,  11886.,  13694.,  15630.,  13438.,  15374.,  17438.,  19630.,
      30108.,  34236.,  38620.,  43260.,  17694.,  19886.,  22206.,  24654.,
      38620.,  43260.,  48156.,  53308.,  21950.,  24398.,  26974.,  29678.,
      27230.,  29934.,  32766.,  35726.,  0.,      0.,      0.,      0.,
      19902.,  22350.,  24926.,  27630.,  23134.,  25838.,  28670.,  31630.,
      52572.,  58236.,  64156.,  70332.,  30462.,  33422.,  36510.,  39726.,
      67228.,  73404.,  79836.,  86524.,  37790.,  41006.,  44350.,  47822.,
      43070.,  46542.,  50142.,  53870.,  0.,      0.,      0.,      0.,
      990.,    2670.,   4478.,   6414.,   7294.,   9230.,   11294.,  13486.,
      14748.,  18876.,  23260.,  27900.,  8478.,   10670.,  12990.,  15438.,
      17116.,  21756.,  26652.,  31804.,  9662.,   12110.,  14686.,  17390.,
      18014.,  20718.,  23550.,  26510.,  0.,      0.,      0.,      0.,
      19902.,  22350.,  24926.,  27630.,  26206.,  28910.,  31742.,  34702.,
      55644.,  61308.,  67228.,  73404.,  30462.,  33422.,  36510.,  39726.,
      64156.,  70332.,  76764.,  83452.,  34718.,  37934.,  41278.,  44750.,
      43070.,  46542.,  50142.,  53870.,  0.,      0.,      0.,      0.,
      40284.,  45948.,  51868.,  58044.,  55964.,  62140.,  68572.,  75260.,
      118392., 131256., 144632., 158520., 64476.,  71164.,  78108.,  85308.,
      135416., 149304., 163704., 178616., 72988.,  80188.,  87644.,  95356.,
      92764.,  100476., 108444., 116668., 0.,      0.,      0.,      0.,
      29598.,  32814.,  36158.,  39630.,  38974.,  42446.,  46046.,  49774.,
      81180.,  88380.,  95836.,  103548., 43230.,  46958.,  50814.,  54798.,
      89692.,  97404.,  105372., 113596., 47486.,  51470.,  55582.,  59822.,
      58910.,  63150.,  67518.,  72014.,  0.,      0.,      0.,      0.,
      57726.,  61710.,  65822.,  70062.,  67102.,  71342.,  75710.,  80206.,
      140508., 149244., 158236., 167484., 74430.,  78926.,  83550.,  88302.,
      155164., 164412., 173916., 183676., 81758.,  86510.,  91390.,  96398.,
      93182.,  98190.,  103326., 108590., 0.,      0.,      0.,      0.,
      1950.,   5166.,   8510.,   11982.,  14398.,  17870.,  21470.,  25198.,
      28956.,  36156.,  43612.,  51324.,  15582.,  19310.,  23166.,  27150.,
      31324.,  39036.,  47004.,  55228.,  16766.,  20750.,  24862.,  29102.,
      31262.,  35502.,  39870.,  44366.,  0.,      0.,      0.,      0.,
      39294.,  43278.,  47390.,  51630.,  51742.,  55982.,  60350.,  64846.,
      106716., 115452., 124444., 133692., 55998.,  60494.,  65118.,  69870.,
      115228., 124476., 133980., 143740., 60254.,  65006.,  69886.,  74894.,
      74750.,  79758.,  84894.,  90158.,  0.,      0.,      0.,      0.,
      79068.,  87804.,  96796.,  106044., 107036., 116284., 125788., 135548.,
      220536., 239544., 259064., 279096., 115548., 125308., 135324., 145596.,
      237560., 257592., 278136., 299192., 124060., 134332., 144860., 155644.,
      156124., 166908., 177948., 189244., 0.,      0.,      0.,      0.,
      48990.,  53742.,  58622.,  63630.,  64510.,  69518.,  74654.,  79918.,
      132252., 142524., 153052., 163836., 68766.,  74030.,  79422.,  84942.,
      140764., 151548., 162588., 173884., 73022.,  78542.,  84190.,  89966.,
      90590.,  96366.,  102270., 108302., 0.,      0.,      0.,      0.,
      95550.,  101070., 106718., 112494., 111070., 116846., 122750., 128782.,
      228444., 240252., 252316., 264636., 118398., 124430., 130590., 136878.,
      243100., 255420., 267996., 280828., 125726., 132014., 138430., 144974.,
      143294., 149838., 156510., 163310., 0.,      0.,      0.,      0.};
  const std::array<int, 4> in_shape = {{3, 5, 8, 4}};
  const int multiplier = 4;
  const auto padding = sycldnn::PaddingMode::VALID;
  const DataType max_input_val = 2048.0;
  this->run_input_backprop_test(exp_out, in_shape, multiplier, padding,
                                max_input_val);
}
TYPED_TEST(InputBackpropWindow3Stride2, SAME3x6x5x1x1) {
  using DataType = typename TestFixture::DataType;
  const std::vector<DataType> exp_out = {
      2.,   5.,   4.,   9.,   6.,   5.,   14.,  10.,  24.,  15.,  16.,  40.,
      26.,  60.,  36.,  20.,  44.,  25.,  54.,  30.,  46.,  100., 56.,  120.,
      66.,  35.,  74.,  40.,  84.,  45.,  20.,  41.,  22.,  45.,  24.,  50.,
      104., 55.,  114., 60.,  106., 220., 116., 240., 126., 65.,  134., 70.,
      144., 75.,  136., 280., 146., 300., 156., 80.,  164., 85.,  174., 90.,
      38.,  77.,  40.,  81.,  42.,  95.,  194., 100., 204., 105., 196., 400.,
      206., 420., 216., 110., 224., 115., 234., 120., 226., 460., 236., 480.,
      246., 125., 254., 130., 264., 135.};
  const std::array<int, 4> in_shape = {{3, 6, 5, 1}};
  const int multiplier = 1;
  const auto padding = sycldnn::PaddingMode::SAME;
  const DataType max_input_val = 2048.0;
  this->run_input_backprop_test(exp_out, in_shape, multiplier, padding,
                                max_input_val);
}
TYPED_TEST(InputBackpropWindow3Stride2, VALID3x6x5x1x1) {
  using DataType = typename TestFixture::DataType;
  const std::vector<DataType> exp_out = {
      1.,   2.,  5.,  4.,   6.,   4.,  5.,   14.,  10.,  12.,  10., 14., 36.,
      24.,  30., 12., 15.,  34.,  20., 24.,  21.,  24.,  55.,  32., 36., 0.,
      0.,   0.,  0.,  0.,   5.,   10., 21.,  12.,  18.,  20.,  25., 54., 30.,
      36.,  42., 54., 116., 64.,  78., 28.,  35.,  74.,  40.,  48., 49., 56.,
      119., 64., 72., 0.,   0.,   0.,  0.,   0.,   9.,   18.,  37., 20., 30.,
      36.,  45., 94., 50.,  60.,  74., 94.,  196., 104., 126., 44., 55., 114.,
      60.,  72., 77., 88.,  183., 96., 108., 0.,   0.,   0.,   0.,  0.};
  const std::array<int, 4> in_shape = {{3, 6, 5, 1}};
  const int multiplier = 1;
  const auto padding = sycldnn::PaddingMode::VALID;
  const DataType max_input_val = 2048.0;
  this->run_input_backprop_test(exp_out, in_shape, multiplier, padding,
                                max_input_val);
}
TYPED_TEST(InputBackpropWindow3Stride2, SAME3x6x5x1x2) {
  using DataType = typename TestFixture::DataType;
  const std::vector<DataType> exp_out = {
      11.,   28.,   25.,   56.,   39.,   29.,  88.,   67.,  164.,  105.,
      100.,  260.,  176.,  412.,  252.,  143., 316.,  181., 392.,  219.,
      328.,  716.,  404.,  868.,  480.,  257., 544.,  295., 620.,  333.,
      137.,  280.,  151.,  308.,  165.,  371., 772.,  409., 848.,  447.,
      784.,  1628., 860.,  1780., 936.,  485., 1000., 523., 1076., 561.,
      1012., 2084., 1088., 2236., 1164., 599., 1228., 637., 1304., 675.,
      263.,  532.,  277.,  560.,  291.,  713., 1456., 751., 1532., 789.,
      1468., 2996., 1544., 3148., 1620., 827., 1684., 865., 1760., 903.,
      1696., 3452., 1772., 3604., 1848., 941., 1912., 979., 1988., 1017.};
  const std::array<int, 4> in_shape = {{3, 6, 5, 1}};
  const int multiplier = 2;
  const auto padding = sycldnn::PaddingMode::SAME;
  const DataType max_input_val = 2048.0;
  this->run_input_backprop_test(exp_out, in_shape, multiplier, padding,
                                max_input_val);
}
TYPED_TEST(InputBackpropWindow3Stride2, VALID3x6x5x1x2) {
  using DataType = typename TestFixture::DataType;
  const std::vector<DataType> exp_out = {
      5.,    11.,  28.,  25.,  39.,  23.,  29.,  88.,  67.,  81.,  58.,   86.,
      232.,  162., 206., 83.,  105., 240., 143., 173., 149., 171., 396.,  233.,
      263.,  0.,   0.,   0.,   0.,   0.,   29.,  67.,  140., 81.,  127.,  143.,
      181.,  392., 219., 265., 298., 390., 840., 466., 574., 203., 257.,  544.,
      295.,  357., 365., 419., 892., 481., 543., 0.,   0.,   0.,   0.,    0.,
      53.,   123., 252., 137., 215., 263., 333., 696., 371., 449., 538.,  694.,
      1448., 770., 942., 323., 409., 848., 447., 541., 581., 667., 1388., 729.,
      823.,  0.,   0.,   0.,   0.,   0.};
  const std::array<int, 4> in_shape = {{3, 6, 5, 1}};
  const int multiplier = 2;
  const auto padding = sycldnn::PaddingMode::VALID;
  const DataType max_input_val = 2048.0;
  this->run_input_backprop_test(exp_out, in_shape, multiplier, padding,
                                max_input_val);
}
TYPED_TEST(InputBackpropWindow3Stride2, SAME3x6x5x1x4) {
  using DataType = typename TestFixture::DataType;
  const std::vector<DataType> exp_out = {
      70.,    180.,   174.,   388.,   278.,   190.,   612.,   486.,   1204.,
      782.,   692.,   1848.,  1284.,  3032.,  1876.,  1078.,  2388.,  1374.,
      2980.,  1670.,  2468.,  5400.,  3060.,  6584.,  3652.,  1966.,  4164.,
      2262.,  4756.,  2558.,  1006.,  2052.,  1110.,  2260.,  1214.,  2854.,
      5940.,  3150.,  6532.,  3446.,  6020.,  12504., 6612.,  13688., 7204.,
      3742.,  7716.,  4038.,  8308.,  4334.,  7796.,  16056., 8388.,  17240.,
      8980.,  4630.,  9492.,  4926.,  10084., 5222.,  1942.,  3924.,  2046.,
      4132.,  2150.,  5518.,  11268., 5814.,  11860., 6110.,  11348., 23160.,
      11940., 24344., 12532., 6406.,  13044., 6702.,  13636., 6998.,  13124.,
      26712., 13716., 27896., 14308., 7294.,  14820., 7590.,  15412., 7886.};
  const std::array<int, 4> in_shape = {{3, 6, 5, 1}};
  const int multiplier = 4;
  const auto padding = sycldnn::PaddingMode::SAME;
  const DataType max_input_val = 2048.0;
  this->run_input_backprop_test(exp_out, in_shape, multiplier, padding,
                                max_input_val);
}
TYPED_TEST(InputBackpropWindow3Stride2, VALID3x6x5x1x4) {
  using DataType = typename TestFixture::DataType;
  const std::vector<DataType> exp_out = {
      30.,   70.,   180.,   174.,  278.,  150.,  190.,  612.,  486.,  590.,
      380.,  588.,  1640.,  1180., 1516., 614.,  782.,  1796., 1078., 1310.,
      1118., 1286., 2996.,  1774., 2006., 0.,    0.,    0.,    0.,    0.,
      190.,  486.,  1012.,  590.,  950.,  1078., 1374., 2980., 1670., 2030.,
      2236., 2956., 6376.,  3548., 4396., 1542., 1966., 4164., 2262., 2750.,
      2814., 3238., 6900.,  3726., 4214., 0.,    0.,    0.,    0.,    0.,
      350.,  902.,  1844.,  1006., 1622., 2006., 2558., 5348., 2854., 3470.,
      4092., 5324., 11112., 5916., 7276., 2470., 3150., 6532., 3446., 4190.,
      4510., 5190., 10804., 5678., 6422., 0.,    0.,    0.,    0.,    0.};
  const std::array<int, 4> in_shape = {{3, 6, 5, 1}};
  const int multiplier = 4;
  const auto padding = sycldnn::PaddingMode::VALID;
  const DataType max_input_val = 2048.0;
  this->run_input_backprop_test(exp_out, in_shape, multiplier, padding,
                                max_input_val);
}
TYPED_TEST(InputBackpropWindow3Stride2, SAME3x6x5x2x1) {
  using DataType = typename TestFixture::DataType;
  const std::vector<DataType> exp_out = {
      3.,    8.,    8.,    20.,   9.,    16.,  20.,  36.,   15.,   24.,   9.,
      20.,   32.,   56.,   27.,   40.,   68.,  96.,  45.,   60.,   36.,   64.,
      100.,  160.,  72.,   104.,  172.,  240., 108., 144.,  63.,   80.,   140.,
      176.,  81.,   100.,  176.,  216.,  99.,  120., 144.,  184.,  316.,  400.,
      180.,  224.,  388.,  480.,  216.,  264., 117., 140.,  248.,  296.,  135.,
      160.,  284.,  336.,  153.,  180.,  57.,  80.,  116.,  164.,  63.,   88.,
      128.,  180.,  69.,   96.,   171.,  200., 356., 416.,  189.,  220.,  392.,
      456.,  207.,  240.,  360.,  424.,  748., 880., 396.,  464.,  820.,  960.,
      432.,  504.,  225.,  260.,  464.,  536., 243., 280.,  500.,  576.,  261.,
      300.,  468.,  544.,  964.,  1120., 504., 584., 1036., 1200., 540.,  624.,
      279.,  320.,  572.,  656.,  297.,  340., 608., 696.,  315.,  360.,  111.,
      152.,  224.,  308.,  117.,  160.,  236., 324., 123.,  168.,  333.,  380.,
      680.,  776.,  351.,  400.,  716.,  816., 369., 420.,  684.,  784.,  1396.,
      1600., 720.,  824.,  1468., 1680., 756., 864., 387.,  440.,  788.,  896.,
      405.,  460.,  824.,  936.,  423.,  480., 792., 904.,  1612., 1840., 828.,
      944.,  1684., 1920., 864.,  984.,  441., 500., 896.,  1016., 459.,  520.,
      932.,  1056., 477.,  540.};
  const std::array<int, 4> in_shape = {{3, 6, 5, 2}};
  const int multiplier = 1;
  const auto padding = sycldnn::PaddingMode::SAME;
  const DataType max_input_val = 2048.0;
  this->run_input_backprop_test(exp_out, in_shape, multiplier, padding,
                                max_input_val);
}
TYPED_TEST(InputBackpropWindow3Stride2, VALID3x6x5x2x1) {
  using DataType = typename TestFixture::DataType;
  const std::vector<DataType> exp_out = {
      1.,   4.,   3.,   8.,   8.,   20.,  9.,   16.,  15.,  24.,  7.,   16.,
      9.,   20.,  32.,  56.,  27.,  40.,  33.,  48.,  18.,  40.,  30.,  56.,
      88.,  144., 66.,  96.,  86.,  120., 35.,  48.,  45.,  60.,  104., 136.,
      63.,  80.,  77.,  96.,  65.,  84.,  75.,  96.,  176., 220., 105., 128.,
      119., 144., 0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,
      9.,   20.,  27.,  40.,  56.,  84.,  33.,  48.,  55.,  72.,  63.,  80.,
      81.,  100., 176., 216., 99.,  120., 121., 144., 130., 168., 174., 216.,
      376., 464., 210., 256., 262., 312., 91.,  112., 117., 140., 248., 296.,
      135., 160., 165., 192., 169., 196., 195., 224., 416., 476., 225., 256.,
      255., 288., 0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,
      17.,  36.,  51.,  72.,  104., 148., 57.,  80.,  95.,  120., 119., 144.,
      153., 180., 320., 376., 171., 200., 209., 240., 242., 296., 318., 376.,
      664., 784., 354., 416., 438., 504., 147., 176., 189., 220., 392., 456.,
      207., 240., 253., 288., 273., 308., 315., 352., 656., 732., 345., 384.,
      391., 432., 0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.};
  const std::array<int, 4> in_shape = {{3, 6, 5, 2}};
  const int multiplier = 1;
  const auto padding = sycldnn::PaddingMode::VALID;
  const DataType max_input_val = 2048.0;
  this->run_input_backprop_test(exp_out, in_shape, multiplier, padding,
                                max_input_val);
}
TYPED_TEST(InputBackpropWindow3Stride2, SAME3x6x5x2x2) {
  using DataType = typename TestFixture::DataType;
  const std::vector<DataType> exp_out = {
      17.,   53.,   46.,    134.,   61.,   113.,  134.,   254.,   105.,  173.,
      53.,   137.,  214.,   398.,   193.,  293.,  494.,   710.,   333.,  449.,
      238.,  454.,  692.,   1156.,  518.,  766.,  1252.,  1780.,  798.,  1078.,
      473.,  605.,  1054.,  1334.,  613.,  761.,  1334.,  1646.,  753.,  917.,
      1078., 1390., 2372.,  3028.,  1358., 1702., 2932.,  3652.,  1638., 2014.,
      893.,  1073., 1894.,  2270.,  1033., 1229., 2174.,  2582.,  1173., 1385.,
      413.,  593.,  838.,   1214.,  457.,  653.,  926.,   1334.,  501.,  713.,
      1313., 1541., 2734.,  3206.,  1453., 1697., 3014.,  3518.,  1593., 1853.,
      2758., 3262., 5732.,  6772.,  3038., 3574., 6292.,  7396.,  3318., 3886.,
      1733., 2009., 3574.,  4142.,  1873., 2165., 3854.,  4454.,  2013., 2321.,
      3598., 4198., 7412.,  8644.,  3878., 4510., 7972.,  9268.,  4158., 4822.,
      2153., 2477., 4414.,  5078.,  2293., 2633., 4694.,  5390.,  2433., 2789.,
      809.,  1133., 1630.,  2294.,  853.,  1193., 1718.,  2414.,  897.,  1253.,
      2573., 2945., 5254.,  6014.,  2713., 3101., 5534.,  6326.,  2853., 3257.,
      5278., 6070., 10772., 12388., 5558., 6382., 11332., 13012., 5838., 6694.,
      2993., 3413., 6094.,  6950.,  3133., 3569., 6374.,  7262.,  3273., 3725.,
      6118., 7006., 12452., 14260., 6398., 7318., 13012., 14884., 6678., 7630.,
      3413., 3881., 6934.,  7886.,  3553., 4037., 7214.,  8198.,  3693., 4193.};
  const std::array<int, 4> in_shape = {{3, 6, 5, 2}};
  const int multiplier = 2;
  const auto padding = sycldnn::PaddingMode::SAME;
  const DataType max_input_val = 2048.0;
  this->run_input_backprop_test(exp_out, in_shape, multiplier, padding,
                                max_input_val);
}
TYPED_TEST(InputBackpropWindow3Stride2, VALID3x6x5x2x2) {
  using DataType = typename TestFixture::DataType;
  const std::vector<DataType> exp_out = {
      5.,    25.,   17.,   53.,   46.,   134.,  61.,   113.,  105.,  173.,
      41.,   109.,  53.,   137.,  214.,  398.,  193.,  293.,  237.,  353.,
      106.,  274.,  194.,  394.,  604.,  1036., 474.,  706.,  626.,  890.,
      257.,  357.,  333.,  449.,  774.,  1022., 473.,  605.,  581.,  729.,
      485.,  633.,  561.,  725.,  1326., 1670., 797.,  977.,  905.,  1101.,
      0.,    0.,    0.,    0.,    0.,    0.,    0.,    0.,    0.,    0.,
      53.,   137.,  193.,  293.,  398.,  614.,  237.,  353.,  409.,  541.,
      473.,  605.,  613.,  761.,  1334., 1646., 753.,  917.,  925.,  1105.,
      970.,  1266., 1314., 1642., 2844., 3532., 1594., 1954., 2002., 2394.,
      689.,  853.,  893.,  1073., 1894., 2270., 1033., 1229., 1269., 1481.,
      1301., 1513., 1505., 1733., 3214., 3686., 1741., 1985., 1977., 2237.,
      0.,    0.,    0.,    0.,    0.,    0.,    0.,    0.,    0.,    0.,
      101.,  249.,  369.,  533.,  750.,  1094., 413.,  593.,  713.,  909.,
      905.,  1101., 1173., 1385., 2454., 2894., 1313., 1541., 1613., 1857.,
      1834., 2258., 2434., 2890., 5084., 6028., 2714., 3202., 3378., 3898.,
      1121., 1349., 1453., 1697., 3014., 3518., 1593., 1853., 1957., 2233.,
      2117., 2393., 2449., 2741., 5102., 5702., 2685., 2993., 3049., 3373.,
      0.,    0.,    0.,    0.,    0.,    0.,    0.,    0.,    0.,    0.};
  const std::array<int, 4> in_shape = {{3, 6, 5, 2}};
  const int multiplier = 2;
  const auto padding = sycldnn::PaddingMode::VALID;
  const DataType max_input_val = 2048.0;
  this->run_input_backprop_test(exp_out, in_shape, multiplier, padding,
                                max_input_val);
}
TYPED_TEST(InputBackpropWindow3Stride2, SAME3x6x5x2x4) {
  using DataType = typename TestFixture::DataType;
  const std::vector<DataType> exp_out = {
      110.,   382.,   300.,   972.,    446.,   846.,   972.,    1900.,
      782.,   1310.,  350.,   1006.,   1548.,  2988.,  1454.,   2238.,
      3756.,  5452.,  2558.,  3470.,   1708.,  3404.,  5112.,   8760.,
      3916.,  5868.,  9528.,  13688.,  6124.,  8332.,  3662.,   4702.,
      8172.,  10380., 4766.,  5934.,   10380., 12844., 5870.,   7166.,
      8332.,  10796., 18360., 23544.,  10540., 13260., 22776.,  28472.,
      12748., 15724., 6974.,  8398.,   14796., 17772., 8078.,   9630.,
      17004., 20236., 9182.,  10862.,  3134.,  4558.,  6348.,   9324.,
      3470.,  5022.,  7020.,  10252.,  3806.,  5486.,  10286.,  12094.,
      21420., 25164., 11390., 13326.,  23628., 27628., 12494.,  14558.,
      21580., 25580., 44856., 53112.,  23788., 28044., 49272.,  58040.,
      25996., 30508., 13598., 15790.,  28044., 32556., 14702.,  17022.,
      30252., 35020., 15806., 18254.,  28204., 32972., 58104.,  67896.,
      30412., 35436., 62520., 72824.,  32620., 37900., 16910.,  19486.,
      34668., 39948., 18014., 20718.,  36876., 42412., 19118.,  21950.,
      6158.,  8734.,  12396., 17676.,  6494.,  9198.,  13068.,  18604.,
      6830.,  9662.,  20222., 23182.,  41292., 47340., 21326.,  24414.,
      43500., 49804., 22430., 25646.,  41452., 47756., 84600.,  97464.,
      43660., 50220., 89016., 102392., 45868., 52684., 23534.,  26878.,
      47916., 54732., 24638., 28110.,  50124., 57196., 25742.,  29342.,
      48076., 55148., 97848., 112248., 50284., 57612., 102264., 117176.,
      52492., 60076., 26846., 30574.,  54540., 62124., 27950.,  31806.,
      56748., 64588., 29054., 33038.};
  const std::array<int, 4> in_shape = {{3, 6, 5, 2}};
  const int multiplier = 4;
  const auto padding = sycldnn::PaddingMode::SAME;
  const DataType max_input_val = 2048.0;
  this->run_input_backprop_test(exp_out, in_shape, multiplier, padding,
                                max_input_val);
}
TYPED_TEST(InputBackpropWindow3Stride2, VALID3x6x5x2x4) {
  using DataType = typename TestFixture::DataType;
  const std::vector<DataType> exp_out = {
      30.,    174.,   110.,   382.,   300.,   972.,   446.,   846.,   782.,
      1310.,  270.,   798.,   350.,   1006.,  1548.,  2988.,  1454.,  2238.,
      1790.,  2702.,  700.,   2012.,  1372.,  2940.,  4440.,  7832.,  3580.,
      5404.,  4764.,  6844.,  1966.,  2750.,  2558.,  3470.,  5964.,  7916.,
      3662.,  4702.,  4510.,  5678.,  3742.,  4910.,  4334.,  5630.,  10284.,
      13004., 6206.,  7630.,  7054.,  8606.,  0.,     0.,     0.,     0.,
      0.,     0.,     0.,     0.,     0.,     0.,     350.,   1006.,  1454.,
      2238.,  2988.,  4684.,  1790.,  2702.,  3150.,  4190.,  3662.,  4702.,
      4766.,  5934.,  10380., 12844., 5870.,  7166.,  7230.,  8654.,  7484.,
      9820.,  10204., 12796., 22104., 27544., 12412., 15260., 15644., 18748.,
      5358.,  6654.,  6974.,  8398.,  14796., 17772., 8078.,  9630.,  9950.,
      11630., 10206., 11886., 11822., 13630., 25260., 29004., 13694., 15630.,
      15566., 17630., 0.,     0.,     0.,     0.,     0.,     0.,     0.,
      0.,     0.,     0.,     670.,   1838.,  2798.,  4094.,  5676.,  8396.,
      3134.,  4558.,  5518.,  7070.,  7054.,  8606.,  9182.,  10862., 19212.,
      22700., 10286., 12094., 12670., 14606., 14268., 17628., 19036., 22652.,
      39768., 47256., 21244., 25116., 26524., 30652., 8750.,  10558., 11390.,
      13326., 23628., 27628., 12494., 14558., 15390., 17582., 16670., 18862.,
      19310., 21630., 40236., 45004., 21182., 23630., 24078., 26654., 0.,
      0.,     0.,     0.,     0.,     0.,     0.,     0.,     0.,     0.};
  const std::array<int, 4> in_shape = {{3, 6, 5, 2}};
  const int multiplier = 4;
  const auto padding = sycldnn::PaddingMode::VALID;
  const DataType max_input_val = 2048.0;
  this->run_input_backprop_test(exp_out, in_shape, multiplier, padding,
                                max_input_val);
}
TYPED_TEST(InputBackpropWindow3Stride2, SAME3x6x5x4x1) {
  using DataType = typename TestFixture::DataType;
  const std::vector<DataType> exp_out = {
      5.,    12.,   21.,   32.,   14.,   32.,   54.,   80.,   25.,   36.,
      49.,   64.,   54.,   80.,   110.,  144.,  45.,   60.,   77.,   96.,
      17.,   36.,   57.,   80.,   86.,   128.,  174.,  224.,  85.,   108.,
      133.,  160.,  222.,  272.,  326.,  384.,  153.,  180.,  209.,  240.,
      94.,   144.,  198.,  256.,  292.,  400.,  516.,  640.,  230.,  288.,
      350.,  416.,  564.,  688.,  820.,  960.,  366.,  432.,  502.,  576.,
      221.,  252.,  285.,  320.,  494.,  560.,  630.,  704.,  289.,  324.,
      361.,  400.,  630.,  704.,  782.,  864.,  357.,  396.,  437.,  480.,
      502.,  576.,  654.,  736.,  1108., 1264., 1428., 1600., 638.,  720.,
      806.,  896.,  1380., 1552., 1732., 1920., 774.,  864.,  958.,  1056.,
      425.,  468.,  513.,  560.,  902.,  992.,  1086., 1184., 493.,  540.,
      589.,  640.,  1038., 1136., 1238., 1344., 561.,  612.,  665.,  720.,
      185.,  228.,  273.,  320.,  374.,  464.,  558.,  656.,  205.,  252.,
      301.,  352.,  414.,  512.,  614.,  720.,  225.,  276.,  329.,  384.,
      629.,  684.,  741.,  800.,  1310., 1424., 1542., 1664., 697.,  756.,
      817.,  880.,  1446., 1568., 1694., 1824., 765.,  828.,  893.,  960.,
      1318., 1440., 1566., 1696., 2740., 2992., 3252., 3520., 1454., 1584.,
      1718., 1856., 3012., 3280., 3556., 3840., 1590., 1728., 1870., 2016.,
      833.,  900.,  969.,  1040., 1718., 1856., 1998., 2144., 901.,  972.,
      1045., 1120., 1854., 2000., 2150., 2304., 969.,  1044., 1121., 1200.,
      1726., 1872., 2022., 2176., 3556., 3856., 4164., 4480., 1862., 2016.,
      2174., 2336., 3828., 4144., 4468., 4800., 1998., 2160., 2326., 2496.,
      1037., 1116., 1197., 1280., 2126., 2288., 2454., 2624., 1105., 1188.,
      1273., 1360., 2262., 2432., 2606., 2784., 1173., 1260., 1349., 1440.,
      365.,  444.,  525.,  608.,  734.,  896.,  1062., 1232., 385.,  468.,
      553.,  640.,  774.,  944.,  1118., 1296., 405.,  492.,  581.,  672.,
      1241., 1332., 1425., 1520., 2534., 2720., 2910., 3104., 1309., 1404.,
      1501., 1600., 2670., 2864., 3062., 3264., 1377., 1476., 1577., 1680.,
      2542., 2736., 2934., 3136., 5188., 5584., 5988., 6400., 2678., 2880.,
      3086., 3296., 5460., 5872., 6292., 6720., 2814., 3024., 3238., 3456.,
      1445., 1548., 1653., 1760., 2942., 3152., 3366., 3584., 1513., 1620.,
      1729., 1840., 3078., 3296., 3518., 3744., 1581., 1692., 1805., 1920.,
      2950., 3168., 3390., 3616., 6004., 6448., 6900., 7360., 3086., 3312.,
      3542., 3776., 6276., 6736., 7204., 7680., 3222., 3456., 3694., 3936.,
      1649., 1764., 1881., 2000., 3350., 3584., 3822., 4064., 1717., 1836.,
      1957., 2080., 3486., 3728., 3974., 4224., 1785., 1908., 2033., 2160.};
  const std::array<int, 4> in_shape = {{3, 6, 5, 4}};
  const int multiplier = 1;
  const auto padding = sycldnn::PaddingMode::SAME;
  const DataType max_input_val = 2048.0;
  this->run_input_backprop_test(exp_out, in_shape, multiplier, padding,
                                max_input_val);
}
TYPED_TEST(InputBackpropWindow3Stride2, VALID3x6x5x4x1) {
  using DataType = typename TestFixture::DataType;
  const std::vector<DataType> exp_out = {
      1.,    4.,    9.,    16.,   5.,    12.,   21.,   32.,   14.,   32.,
      54.,   80.,   25.,   36.,   49.,   64.,   45.,   60.,   77.,   96.,
      13.,   28.,   45.,   64.,   17.,   36.,   57.,   80.,   86.,   128.,
      174.,  224.,  85.,   108.,  133.,  160.,  105.,  132.,  161.,  192.,
      34.,   72.,   114.,  160.,  74.,   120.,  170.,  224.,  252.,  352.,
      460.,  576.,  210.,  264.,  322.,  384.,  282.,  344.,  410.,  480.,
      117.,  140.,  165.,  192.,  153.,  180.,  209.,  240.,  358.,  416.,
      478.,  544.,  221.,  252.,  285.,  320.,  273.,  308.,  345.,  384.,
      225.,  260.,  297.,  336.,  261.,  300.,  341.,  384.,  622.,  704.,
      790.,  880.,  377.,  420.,  465.,  512.,  429.,  476.,  525.,  576.,
      0.,    0.,    0.,    0.,    0.,    0.,    0.,    0.,    0.,    0.,
      0.,    0.,    0.,    0.,    0.,    0.,    0.,    0.,    0.,    0.,
      17.,   36.,   57.,   80.,   85.,   108.,  133.,  160.,  174.,  224.,
      278.,  336.,  105.,  132.,  161.,  192.,  189.,  220.,  253.,  288.,
      221.,  252.,  285.,  320.,  289.,  324.,  361.,  400.,  630.,  704.,
      782.,  864.,  357.,  396.,  437.,  480.,  441.,  484.,  529.,  576.,
      450.,  520.,  594.,  672.,  618.,  696.,  778.,  864.,  1340., 1504.,
      1676., 1856., 754.,  840.,  930.,  1024., 954.,  1048., 1146., 1248.,
      325.,  364.,  405.,  448.,  425.,  468.,  513.,  560.,  902.,  992.,
      1086., 1184., 493.,  540.,  589.,  640.,  609.,  660.,  713.,  768.,
      625.,  676.,  729.,  784.,  725.,  780.,  837.,  896.,  1550., 1664.,
      1782., 1904., 841.,  900.,  961.,  1024., 957.,  1020., 1085., 1152.,
      0.,    0.,    0.,    0.,    0.,    0.,    0.,    0.,    0.,    0.,
      0.,    0.,    0.,    0.,    0.,    0.,    0.,    0.,    0.,    0.,
      33.,   68.,   105.,  144.,  165.,  204.,  245.,  288.,  334.,  416.,
      502.,  592.,  185.,  228.,  273.,  320.,  333.,  380.,  429.,  480.,
      429.,  476.,  525.,  576.,  561.,  612.,  665.,  720.,  1174., 1280.,
      1390., 1504., 629.,  684.,  741.,  800.,  777.,  836.,  897.,  960.,
      866.,  968.,  1074., 1184., 1162., 1272., 1386., 1504., 2428., 2656.,
      2892., 3136., 1298., 1416., 1538., 1664., 1626., 1752., 1882., 2016.,
      533.,  588.,  645.,  704.,  697.,  756.,  817.,  880.,  1446., 1568.,
      1694., 1824., 765.,  828.,  893.,  960.,  945.,  1012., 1081., 1152.,
      1025., 1092., 1161., 1232., 1189., 1260., 1333., 1408., 2478., 2624.,
      2774., 2928., 1305., 1380., 1457., 1536., 1485., 1564., 1645., 1728.,
      0.,    0.,    0.,    0.,    0.,    0.,    0.,    0.,    0.,    0.,
      0.,    0.,    0.,    0.,    0.,    0.,    0.,    0.,    0.,    0.};
  const std::array<int, 4> in_shape = {{3, 6, 5, 4}};
  const int multiplier = 1;
  const auto padding = sycldnn::PaddingMode::VALID;
  const DataType max_input_val = 2048.0;
  this->run_input_backprop_test(exp_out, in_shape, multiplier, padding,
                                max_input_val);
}
TYPED_TEST(InputBackpropWindow3Stride2, SAME3x6x5x4x2) {
  using DataType = typename TestFixture::DataType;
  const std::vector<DataType> exp_out = {
      29.,    81.,    149.,   233.,   82.,    218.,   386.,   586.,   181.,
      265.,   365.,   481.,   386.,   586.,   818.,   1082.,  333.,   449.,
      581.,   729.,   101.,   249.,   413.,   593.,   610.,   938.,   1298.,
      1690.,  637.,   817.,   1013.,  1225.,  1682.,  2074.,  2498.,  2954.,
      1173.,  1385.,  1613.,  1857.,  658.,   1050.,  1474.,  1930.,  2132.,
      2980.,  3892.,  4868.,  1730.,  2186.,  2674.,  3194.,  4276.,  5252.,
      6292.,  7396.,  2802.,  3322.,  3874.,  4458.,  1709.,  1953.,  2213.,
      2489.,  3826.,  4346.,  4898.,  5482.,  2245.,  2521.,  2813.,  3121.,
      4898.,  5482.,  6098.,  6746.,  2781.,  3089.,  3413.,  3753.,  3874.,
      4458.,  5074.,  5722.,  8564.,  9796.,  11092., 12452., 4946.,  5594.,
      6274.,  6986.,  10708., 12068., 13492., 14980., 6018.,  6730.,  7474.,
      8250.,  3317.,  3657.,  4013.,  4385.,  7042.,  7754.,  8498.,  9274.,
      3853.,  4225.,  4613.,  5017.,  8114.,  8890.,  9698.,  10538., 4389.,
      4793.,  5213.,  5649.,  1397.,  1737.,  2093.,  2465.,  2818.,  3530.,
      4274.,  5050.,  1549.,  1921.,  2309.,  2713.,  3122.,  3898.,  4706.,
      5546.,  1701.,  2105.,  2525.,  2961.,  4925.,  5361.,  5813.,  6281.,
      10258., 11162., 12098., 13066., 5461.,  5929.,  6413.,  6913.,  11330.,
      12298., 13298., 14330., 5997.,  6497.,  7013.,  7545.,  10306., 11274.,
      12274., 13306., 21428., 23428., 25492., 27620., 11378., 12410., 13474.,
      14570., 23572., 25700., 27892., 30148., 12450., 13546., 14674., 15834.,
      6533.,  7065.,  7613.,  8177.,  13474., 14570., 15698., 16858., 7069.,
      7633.,  8213.,  8809.,  14546., 15706., 16898., 18122., 7605.,  8201.,
      8813.,  9441.,  13522., 14682., 15874., 17098., 27860., 30244., 32692.,
      35204., 14594., 15818., 17074., 18362., 30004., 32516., 35092., 37732.,
      15666., 16954., 18274., 19626., 8141.,  8769.,  9413.,  10073., 16690.,
      17978., 19298., 20650., 8677.,  9337.,  10013., 10705., 17762., 19114.,
      20498., 21914., 9213.,  9905.,  10613., 11337., 2765.,  3393.,  4037.,
      4697.,  5554.,  6842.,  8162.,  9514.,  2917.,  3577.,  4253.,  4945.,
      5858.,  7210.,  8594.,  10010., 3069.,  3761.,  4469.,  5193.,  9749.,
      10473., 11213., 11969., 19906., 21386., 22898., 24442., 10285., 11041.,
      11813., 12601., 20978., 22522., 24098., 25706., 10821., 11609., 12413.,
      13233., 19954., 21498., 23074., 24682., 40724., 43876., 47092., 50372.,
      21026., 22634., 24274., 25946., 42868., 46148., 49492., 52900., 22098.,
      23770., 25474., 27210., 11357., 12177., 13013., 13865., 23122., 24794.,
      26498., 28234., 11893., 12745., 13613., 14497., 24194., 25930., 27698.,
      29498., 12429., 13313., 14213., 15129., 23170., 24906., 26674., 28474.,
      47156., 50692., 54292., 57956., 24242., 26042., 27874., 29738., 49300.,
      52964., 56692., 60484., 25314., 27178., 29074., 31002., 12965., 13881.,
      14813., 15761., 26338., 28202., 30098., 32026., 13501., 14449., 15413.,
      16393., 27410., 29338., 31298., 33290., 14037., 15017., 16013., 17025.};
  const std::array<int, 4> in_shape = {{3, 6, 5, 4}};
  const int multiplier = 2;
  const auto padding = sycldnn::PaddingMode::SAME;
  const DataType max_input_val = 2048.0;
  this->run_input_backprop_test(exp_out, in_shape, multiplier, padding,
                                max_input_val);
}
TYPED_TEST(InputBackpropWindow3Stride2, VALID3x6x5x4x2) {
  using DataType = typename TestFixture::DataType;
  const std::vector<DataType> exp_out = {
      5.,     25.,    61.,    113.,   29.,    81.,    149.,   233.,   82.,
      218.,   386.,   586.,   181.,   265.,   365.,   481.,   333.,   449.,
      581.,   729.,   77.,    193.,   325.,   473.,   101.,   249.,   413.,
      593.,   610.,   938.,   1298.,  1690.,  637.,   817.,   1013.,  1225.,
      789.,   1001.,  1229.,  1473.,  202.,   498.,   826.,   1186.,  506.,
      866.,   1258.,  1682.,  1828.,  2612.,  3460.,  4372.,  1578.,  2002.,
      2458.,  2946.,  2138.,  2626.,  3146.,  3698.,  893.,   1073.,  1269.,
      1481.,  1173.,  1385.,  1613.,  1857.,  2754.,  3210.,  3698.,  4218.,
      1709.,  1953.,  2213.,  2489.,  2117.,  2393.,  2685.,  2993.,  1733.,
      2009.,  2301.,  2609.,  2013.,  2321.,  2645.,  2985.,  4818.,  5466.,
      6146.,  6858.,  2933.,  3273.,  3629.,  4001.,  3341.,  3713.,  4101.,
      4505.,  0.,     0.,     0.,     0.,     0.,     0.,     0.,     0.,
      0.,     0.,     0.,     0.,     0.,     0.,     0.,     0.,     0.,
      0.,     0.,     0.,     101.,   249.,   413.,   593.,   637.,   817.,
      1013.,  1225.,  1298.,  1690.,  2114.,  2570.,  789.,   1001.,  1229.,
      1473.,  1453.,  1697.,  1957.,  2233.,  1709.,  1953.,  2213.,  2489.,
      2245.,  2521.,  2813.,  3121.,  4898.,  5482.,  6098.,  6746.,  2781.,
      3089.,  3413.,  3753.,  3445.,  3785.,  4141.,  4513.,  3466.,  4018.,
      4602.,  5218.,  4794.,  5410.,  6058.,  6738.,  10404., 11700., 13060.,
      14484., 5866.,  6546.,  7258.,  8002.,  7450.,  8194.,  8970.,  9778.,
      2525.,  2833.,  3157.,  3497.,  3317.,  3657.,  4013.,  4385.,  7042.,
      7754.,  8498.,  9274.,  3853.,  4225.,  4613.,  5017.,  4773.,  5177.,
      5597.,  6033.,  4901.,  5305.,  5725.,  6161.,  5693.,  6129.,  6581.,
      7049.,  12178., 13082., 14018., 14986., 6613.,  7081.,  7565.,  8065.,
      7533.,  8033.,  8549.,  9081.,  0.,     0.,     0.,     0.,     0.,
      0.,     0.,     0.,     0.,     0.,     0.,     0.,     0.,     0.,
      0.,     0.,     0.,     0.,     0.,     0.,     197.,   473.,   765.,
      1073.,  1245.,  1553.,  1877.,  2217.,  2514.,  3162.,  3842.,  4554.,
      1397.,  1737.,  2093.,  2465.,  2573.,  2945.,  3333.,  3737.,  3341.,
      3713.,  4101.,  4505.,  4389.,  4793.,  5213.,  5649.,  9186.,  10026.,
      10898., 11802., 4925.,  5361.,  5813.,  6281.,  6101.,  6569.,  7053.,
      7553.,  6730.,  7538.,  8378.,  9250.,  9082.,  9954.,  10858., 11794.,
      18980., 20788., 22660., 24596., 10154., 11090., 12058., 13058., 12762.,
      13762., 14794., 15858., 4157.,  4593.,  5045.,  5513.,  5461.,  5929.,
      6413.,  6913.,  11330., 12298., 13298., 14330., 5997.,  6497.,  7013.,
      7545.,  7429.,  7961.,  8509.,  9073.,  8069.,  8601.,  9149.,  9713.,
      9373.,  9937.,  10517., 11113., 19538., 20698., 21890., 23114., 10293.,
      10889., 11501., 12129., 11725., 12353., 12997., 13657., 0.,     0.,
      0.,     0.,     0.,     0.,     0.,     0.,     0.,     0.,     0.,
      0.,     0.,     0.,     0.,     0.,     0.,     0.,     0.,     0.};
  const std::array<int, 4> in_shape = {{3, 6, 5, 4}};
  const int multiplier = 2;
  const auto padding = sycldnn::PaddingMode::VALID;
  const DataType max_input_val = 2048.0;
  this->run_input_backprop_test(exp_out, in_shape, multiplier, padding,
                                max_input_val);
}
TYPED_TEST(InputBackpropWindow3Stride2, SAME3x6x5x4x4) {
  using DataType = typename TestFixture::DataType;
  const std::vector<DataType> exp_out = {
      190.,    590.,    1118.,   1774.,   540.,    1596.,   2908.,   4476.,
      1374.,   2030.,   2814.,   3726.,   2908.,   4476.,   6300.,   8380.,
      2558.,   3470.,   4510.,   5678.,   670.,    1838.,   3134.,   4558.,
      4572.,   7164.,   10012.,  13116.,  4926.,   6350.,   7902.,   9582.,
      13084.,  16188.,  19548.,  23164.,  9182.,   10862.,  12670.,  14606.,
      4892.,   7996.,   11356.,  14972.,  16248.,  22968.,  30200.,  37944.,
      13404.,  17020.,  20892.,  25020.,  33272.,  41016.,  49272.,  58040.,
      21916.,  26044.,  30428.,  35068.,  13438.,  15374.,  17438.,  19630.,
      30108.,  34236.,  38620.,  43260.,  17694.,  19886.,  22206.,  24654.,
      38620.,  43260.,  48156.,  53308.,  21950.,  24398.,  26974.,  29678.,
      30428.,  35068.,  39964.,  45116.,  67320.,  77112.,  87416.,  98232.,
      38940.,  44092.,  49500.,  55164.,  84344.,  95160.,  106488., 118328.,
      47452.,  53116.,  59036.,  65212.,  26206.,  28910.,  31742.,  34702.,
      55644.,  61308.,  67228.,  73404.,  30462.,  33422.,  36510.,  39726.,
      64156.,  70332.,  76764.,  83452.,  34718.,  37934.,  41278.,  44750.,
      10846.,  13550.,  16382.,  19342.,  21852.,  27516.,  33436.,  39612.,
      12030.,  14990.,  18078.,  21294.,  24220.,  30396.,  36828.,  43516.,
      13214.,  16430.,  19774.,  23246.,  38974.,  42446.,  46046.,  49774.,
      81180.,  88380.,  95836.,  103548., 43230.,  46958.,  50814.,  54798.,
      89692.,  97404.,  105372., 113596., 47486.,  51470.,  55582.,  59822.,
      81500.,  89212.,  97180.,  105404., 169464., 185400., 201848., 218808.,
      90012.,  98236.,  106716., 115452., 186488., 203448., 220920., 238904.,
      98524.,  107260., 116252., 125500., 51742.,  55982.,  60350.,  64846.,
      106716., 115452., 124444., 133692., 55998.,  60494.,  65118.,  69870.,
      115228., 124476., 133980., 143740., 60254.,  65006.,  69886.,  74894.,
      107036., 116284., 125788., 135548., 220536., 239544., 259064., 279096.,
      115548., 125308., 135324., 145596., 237560., 257592., 278136., 299192.,
      124060., 134332., 144860., 155644., 64510.,  69518.,  74654.,  79918.,
      132252., 142524., 153052., 163836., 68766.,  74030.,  79422.,  84942.,
      140764., 151548., 162588., 173884., 73022.,  78542.,  84190.,  89966.,
      21502.,  26510.,  31646.,  36910.,  43164.,  53436.,  63964.,  74748.,
      22686.,  27950.,  33342.,  38862.,  45532.,  56316.,  67356.,  78652.,
      23870.,  29390.,  35038.,  40814.,  77278.,  83054.,  88958.,  94990.,
      157788., 169596., 181660., 193980., 81534.,  87566.,  93726.,  100014.,
      166300., 178620., 191196., 204028., 85790.,  92078.,  98494.,  105038.,
      158108., 170428., 183004., 195836., 322680., 347832., 373496., 399672.,
      166620., 179452., 192540., 205884., 339704., 365880., 392568., 419768.,
      175132., 188476., 202076., 215932., 90046.,  96590.,  103262., 110062.,
      183324., 196668., 210268., 224124., 94302.,  101102., 108030., 115086.,
      191836., 205692., 219804., 234172., 98558.,  105614., 112798., 120110.,
      183644., 197500., 211612., 225980., 373752., 401976., 430712., 459960.,
      192156., 206524., 221148., 236028., 390776., 420024., 449784., 480056.,
      200668., 215548., 230684., 246076., 102814., 110126., 117566., 125134.,
      208860., 223740., 238876., 254268., 107070., 114638., 122334., 130158.,
      217372., 232764., 248412., 264316., 111326., 119150., 127102., 135182.};
  const std::array<int, 4> in_shape = {{3, 6, 5, 4}};
  const int multiplier = 4;
  const auto padding = sycldnn::PaddingMode::SAME;
  const DataType max_input_val = 2048.0;
  this->run_input_backprop_test(exp_out, in_shape, multiplier, padding,
                                max_input_val);
}
TYPED_TEST(InputBackpropWindow3Stride2, VALID3x6x5x4x4) {
  using DataType = typename TestFixture::DataType;
  const std::vector<DataType> exp_out = {
      30.,     174.,    446.,    846.,    190.,   590.,   1118.,   1774.,
      540.,    1596.,   2908.,   4476.,   1374.,  2030.,  2814.,   3726.,
      2558.,   3470.,   4510.,   5678.,   510.,   1422.,  2462.,   3630.,
      670.,    1838.,   3134.,   4558.,   4572.,  7164.,  10012.,  13116.,
      4926.,   6350.,   7902.,   9582.,   6110.,  7790.,  9598.,   11534.,
      1340.,   3676.,   6268.,   9116.,   3708.,  6556.,  9660.,   13020.,
      13880.,  20088.,  26808.,  34040.,  12220., 15580., 19196.,  23068.,
      16636.,  20508.,  24636.,  29020.,  6974.,  8398.,  9950.,   11630.,
      9182.,   10862.,  12670.,  14606.,  21596., 25212., 29084.,  33212.,
      13438.,  15374.,  17438.,  19630.,  16670., 18862., 21182.,  23630.,
      13598.,  15790.,  18110.,  20558.,  15806., 18254., 20830.,  23534.,
      37916.,  43068.,  48476.,  54140.,  23134., 25838., 28670.,  31630.,
      26366.,  29326.,  32414.,  35630.,  0.,     0.,     0.,      0.,
      0.,      0.,      0.,      0.,      0.,     0.,     0.,      0.,
      0.,      0.,      0.,      0.,      0.,     0.,     0.,      0.,
      670.,    1838.,   3134.,   4558.,   4926.,  6350.,  7902.,   9582.,
      10012.,  13116.,  16476.,  20092.,  6110.,  7790.,  9598.,   11534.,
      11390.,  13326.,  15390.,  17582.,  13438., 15374., 17438.,  19630.,
      17694.,  19886.,  22206.,  24654.,  38620., 43260., 48156.,  53308.,
      21950.,  24398.,  26974.,  29678.,  27230., 29934., 32766.,  35726.,
      27196.,  31580.,  36220.,  41116.,  37756., 42652., 47804.,  53212.,
      81976.,  92280.,  103096., 114424., 46268., 51676., 57340.,  63260.,
      58876.,  64796.,  70972.,  77404.,  19902., 22350., 24926.,  27630.,
      26206.,  28910.,  31742.,  34702.,  55644., 61308., 67228.,  73404.,
      30462.,  33422.,  36510.,  39726.,  37790., 41006., 44350.,  47822.,
      38814.,  42030.,  45374.,  48846.,  45118., 48590., 52190.,  55918.,
      96540.,  103740., 111196., 118908., 52446., 56174., 60030.,  64014.,
      59774.,  63758.,  67870.,  72110.,  0.,     0.,     0.,      0.,
      0.,      0.,      0.,      0.,      0.,     0.,     0.,      0.,
      0.,      0.,      0.,      0.,      0.,     0.,     0.,      0.,
      1310.,   3502.,   5822.,   8270.,   9662.,  12110., 14686.,  17390.,
      19484.,  24636.,  30044.,  35708.,  10846., 13550., 16382.,  19342.,
      20222.,  23182.,  26270.,  29486.,  26366., 29326., 32414.,  35630.,
      34718.,  37934.,  41278.,  44750.,  72668., 79356., 86300.,  93500.,
      38974.,  42446.,  46046.,  49774.,  48350., 52078., 55934.,  59918.,
      53052.,  59484.,  66172.,  73116.,  71804., 78748., 85948.,  93404.,
      150072., 164472., 179384., 194808., 80316., 87772., 95484.,  103452.,
      101116., 109084., 117308., 125788., 32830., 36302., 39902.,  43630.,
      43230.,  46958.,  50814.,  54798.,  89692., 97404., 105372., 113596.,
      47486.,  51470.,  55582.,  59822.,  58910., 63150., 67518.,  72014.,
      64030.,  68270.,  72638.,  77134.,  74430., 78926., 83550.,  88302.,
      155164., 164412., 173916., 183676., 81758., 86510., 91390.,  96398.,
      93182.,  98190.,  103326., 108590., 0.,     0.,     0.,      0.,
      0.,      0.,      0.,      0.,      0.,     0.,     0.,      0.,
      0.,      0.,      0.,      0.,      0.,     0.,     0.,      0.};
  const std::array<int, 4> in_shape = {{3, 6, 5, 4}};
  const int multiplier = 4;
  const auto padding = sycldnn::PaddingMode::VALID;
  const DataType max_input_val = 2048.0;
  this->run_input_backprop_test(exp_out, in_shape, multiplier, padding,
                                max_input_val);
}
TYPED_TEST(InputBackpropWindow3Stride2, SAME3x6x6x1x1) {
  using DataType = typename TestFixture::DataType;
  const std::vector<DataType> exp_out = {
      1.,   2.,   5.,   4.,   9.,   6.,   4.,   5.,   14.,  10.,  24.,  15.,
      11.,  16.,  40.,  26.,  60.,  36.,  16.,  20.,  44.,  25.,  54.,  30.,
      35.,  46.,  100., 56.,  120., 66.,  28.,  35.,  74.,  40.,  84.,  45.,
      10.,  20.,  41.,  22.,  45.,  24.,  40.,  50.,  104., 55.,  114., 60.,
      83.,  106., 220., 116., 240., 126., 52.,  65.,  134., 70.,  144., 75.,
      107., 136., 280., 146., 300., 156., 64.,  80.,  164., 85.,  174., 90.,
      19.,  38.,  77.,  40.,  81.,  42.,  76.,  95.,  194., 100., 204., 105.,
      155., 196., 400., 206., 420., 216., 88.,  110., 224., 115., 234., 120.,
      179., 226., 460., 236., 480., 246., 100., 125., 254., 130., 264., 135.};
  const std::array<int, 4> in_shape = {{3, 6, 6, 1}};
  const int multiplier = 1;
  const auto padding = sycldnn::PaddingMode::SAME;
  const DataType max_input_val = 2048.0;
  this->run_input_backprop_test(exp_out, in_shape, multiplier, padding,
                                max_input_val);
}
TYPED_TEST(InputBackpropWindow3Stride2, VALID3x6x6x1x1) {
  using DataType = typename TestFixture::DataType;
  const std::vector<DataType> exp_out = {
      1.,  2.,  5.,   4.,   6.,   0., 4.,  5.,  14.,  10., 12., 0.,
      10., 14., 36.,  24.,  30.,  0., 12., 15., 34.,  20., 24., 0.,
      21., 24., 55.,  32.,  36.,  0., 0.,  0.,  0.,   0.,  0.,  0.,
      5.,  10., 21.,  12.,  18.,  0., 20., 25., 54.,  30., 36., 0.,
      42., 54., 116., 64.,  78.,  0., 28., 35., 74.,  40., 48., 0.,
      49., 56., 119., 64.,  72.,  0., 0.,  0.,  0.,   0.,  0.,  0.,
      9.,  18., 37.,  20.,  30.,  0., 36., 45., 94.,  50., 60., 0.,
      74., 94., 196., 104., 126., 0., 44., 55., 114., 60., 72., 0.,
      77., 88., 183., 96.,  108., 0., 0.,  0.,  0.,   0.,  0.,  0.};
  const std::array<int, 4> in_shape = {{3, 6, 6, 1}};
  const int multiplier = 1;
  const auto padding = sycldnn::PaddingMode::VALID;
  const DataType max_input_val = 2048.0;
  this->run_input_backprop_test(exp_out, in_shape, multiplier, padding,
                                max_input_val);
}
TYPED_TEST(InputBackpropWindow3Stride2, SAME3x6x6x1x2) {
  using DataType = typename TestFixture::DataType;
  const std::vector<DataType> exp_out = {
      5.,    11.,   28.,   25.,   56.,   39.,   23.,   29.,   88.,   67.,
      164.,  105.,  64.,   100.,  260.,  176.,  412.,  252.,  113.,  143.,
      316.,  181.,  392.,  219.,  244.,  328.,  716.,  404.,  868.,  480.,
      203.,  257.,  544.,  295.,  620.,  333.,  59.,   137.,  280.,  151.,
      308.,  165.,  293.,  371.,  772.,  409.,  848.,  447.,  604.,  784.,
      1628., 860.,  1780., 936.,  383.,  485.,  1000., 523.,  1076., 561.,
      784.,  1012., 2084., 1088., 2236., 1164., 473.,  599.,  1228., 637.,
      1304., 675.,  113.,  263.,  532.,  277.,  560.,  291.,  563.,  713.,
      1456., 751.,  1532., 789.,  1144., 1468., 2996., 1544., 3148., 1620.,
      653.,  827.,  1684., 865.,  1760., 903.,  1324., 1696., 3452., 1772.,
      3604., 1848., 743.,  941.,  1912., 979.,  1988., 1017.};
  const std::array<int, 4> in_shape = {{3, 6, 6, 1}};
  const int multiplier = 2;
  const auto padding = sycldnn::PaddingMode::SAME;
  const DataType max_input_val = 2048.0;
  this->run_input_backprop_test(exp_out, in_shape, multiplier, padding,
                                max_input_val);
}
TYPED_TEST(InputBackpropWindow3Stride2, VALID3x6x6x1x2) {
  using DataType = typename TestFixture::DataType;
  const std::vector<DataType> exp_out = {
      5.,   11.,  28.,   25.,  39.,  0., 23.,  29.,  88.,  67.,  81.,  0.,
      58.,  86.,  232.,  162., 206., 0., 83.,  105., 240., 143., 173., 0.,
      149., 171., 396.,  233., 263., 0., 0.,   0.,   0.,   0.,   0.,   0.,
      29.,  67.,  140.,  81.,  127., 0., 143., 181., 392., 219., 265., 0.,
      298., 390., 840.,  466., 574., 0., 203., 257., 544., 295., 357., 0.,
      365., 419., 892.,  481., 543., 0., 0.,   0.,   0.,   0.,   0.,   0.,
      53.,  123., 252.,  137., 215., 0., 263., 333., 696., 371., 449., 0.,
      538., 694., 1448., 770., 942., 0., 323., 409., 848., 447., 541., 0.,
      581., 667., 1388., 729., 823., 0., 0.,   0.,   0.,   0.,   0.,   0.};
  const std::array<int, 4> in_shape = {{3, 6, 6, 1}};
  const int multiplier = 2;
  const auto padding = sycldnn::PaddingMode::VALID;
  const DataType max_input_val = 2048.0;
  this->run_input_backprop_test(exp_out, in_shape, multiplier, padding,
                                max_input_val);
}
TYPED_TEST(InputBackpropWindow3Stride2, SAME3x6x6x1x4) {
  using DataType = typename TestFixture::DataType;
  const std::vector<DataType> exp_out = {
      30.,    70.,    180.,   174.,  388.,   278.,   150.,   190.,   612.,
      486.,   1204.,  782.,   420.,  692.,   1848.,  1284.,  3032.,  1876.,
      846.,   1078.,  2388.,  1374., 2980.,  1670.,  1812.,  2468.,  5400.,
      3060.,  6584.,  3652.,  1542., 1966.,  4164.,  2262.,  4756.,  2558.,
      390.,   1006.,  2052.,  1110., 2260.,  1214.,  2238.,  2854.,  5940.,
      3150.,  6532.,  3446.,  4596., 6020.,  12504., 6612.,  13688., 7204.,
      2934.,  3742.,  7716.,  4038., 8308.,  4334.,  5988.,  7796.,  16056.,
      8388.,  17240., 8980.,  3630., 4630.,  9492.,  4926.,  10084., 5222.,
      750.,   1942.,  3924.,  2046., 4132.,  2150.,  4326.,  5518.,  11268.,
      5814.,  11860., 6110.,  8772., 11348., 23160., 11940., 24344., 12532.,
      5022.,  6406.,  13044., 6702., 13636., 6998.,  10164., 13124., 26712.,
      13716., 27896., 14308., 5718., 7294.,  14820., 7590.,  15412., 7886.};
  const std::array<int, 4> in_shape = {{3, 6, 6, 1}};
  const int multiplier = 4;
  const auto padding = sycldnn::PaddingMode::SAME;
  const DataType max_input_val = 2048.0;
  this->run_input_backprop_test(exp_out, in_shape, multiplier, padding,
                                max_input_val);
}
TYPED_TEST(InputBackpropWindow3Stride2, VALID3x6x6x1x4) {
  using DataType = typename TestFixture::DataType;
  const std::vector<DataType> exp_out = {
      30.,   70.,   180.,  174.,  278.,  0.,    150.,   190.,  612.,   486.,
      590.,  0.,    380.,  588.,  1640., 1180., 1516.,  0.,    614.,   782.,
      1796., 1078., 1310., 0.,    1118., 1286., 2996.,  1774., 2006.,  0.,
      0.,    0.,    0.,    0.,    0.,    0.,    190.,   486.,  1012.,  590.,
      950.,  0.,    1078., 1374., 2980., 1670., 2030.,  0.,    2236.,  2956.,
      6376., 3548., 4396., 0.,    1542., 1966., 4164.,  2262., 2750.,  0.,
      2814., 3238., 6900., 3726., 4214., 0.,    0.,     0.,    0.,     0.,
      0.,    0.,    350.,  902.,  1844., 1006., 1622.,  0.,    2006.,  2558.,
      5348., 2854., 3470., 0.,    4092., 5324., 11112., 5916., 7276.,  0.,
      2470., 3150., 6532., 3446., 4190., 0.,    4510.,  5190., 10804., 5678.,
      6422., 0.,    0.,    0.,    0.,    0.,    0.,     0.};
  const std::array<int, 4> in_shape = {{3, 6, 6, 1}};
  const int multiplier = 4;
  const auto padding = sycldnn::PaddingMode::VALID;
  const DataType max_input_val = 2048.0;
  this->run_input_backprop_test(exp_out, in_shape, multiplier, padding,
                                max_input_val);
}
TYPED_TEST(InputBackpropWindow3Stride2, SAME3x6x6x2x1) {
  using DataType = typename TestFixture::DataType;
  const std::vector<DataType> exp_out = {
      1.,    4.,    3.,    8.,    8.,    20.,  9.,   16.,   20.,   36.,   15.,
      24.,   7.,    16.,   9.,    20.,   32.,  56.,  27.,   40.,   68.,   96.,
      45.,   60.,   20.,   44.,   36.,   64.,  100., 160.,  72.,   104.,  172.,
      240.,  108.,  144.,  49.,   64.,   63.,  80.,  140.,  176.,  81.,   100.,
      176.,  216.,  99.,   120.,  104.,  140., 144., 184.,  316.,  400.,  180.,
      224.,  388.,  480.,  216.,  264.,  91.,  112., 117.,  140.,  248.,  296.,
      135.,  160.,  284.,  336.,  153.,  180., 19.,  40.,   57.,   80.,   116.,
      164.,  63.,   88.,   128.,  180.,  69.,  96.,  133.,  160.,  171.,  200.,
      356.,  416.,  189.,  220.,  392.,  456., 207., 240.,  272.,  332.,  360.,
      424.,  748.,  880.,  396.,  464.,  820., 960., 432.,  504.,  175.,  208.,
      225.,  260.,  464.,  536.,  243.,  280., 500., 576.,  261.,  300.,  356.,
      428.,  468.,  544.,  964.,  1120., 504., 584., 1036., 1200., 540.,  624.,
      217.,  256.,  279.,  320.,  572.,  656., 297., 340.,  608.,  696.,  315.,
      360.,  37.,   76.,   111.,  152.,  224., 308., 117.,  160.,  236.,  324.,
      123.,  168.,  259.,  304.,  333.,  380., 680., 776.,  351.,  400.,  716.,
      816.,  369.,  420.,  524.,  620.,  684., 784., 1396., 1600., 720.,  824.,
      1468., 1680., 756.,  864.,  301.,  352., 387., 440.,  788.,  896.,  405.,
      460.,  824.,  936.,  423.,  480.,  608., 716., 792.,  904.,  1612., 1840.,
      828.,  944.,  1684., 1920., 864.,  984., 343., 400.,  441.,  500.,  896.,
      1016., 459.,  520.,  932.,  1056., 477., 540.};
  const std::array<int, 4> in_shape = {{3, 6, 6, 2}};
  const int multiplier = 1;
  const auto padding = sycldnn::PaddingMode::SAME;
  const DataType max_input_val = 2048.0;
  this->run_input_backprop_test(exp_out, in_shape, multiplier, padding,
                                max_input_val);
}
TYPED_TEST(InputBackpropWindow3Stride2, VALID3x6x6x2x1) {
  using DataType = typename TestFixture::DataType;
  const std::vector<DataType> exp_out = {
      1.,   4.,   3.,   8.,   8.,   20.,  9.,   16.,  15.,  24.,  0., 0.,
      7.,   16.,  9.,   20.,  32.,  56.,  27.,  40.,  33.,  48.,  0., 0.,
      18.,  40.,  30.,  56.,  88.,  144., 66.,  96.,  86.,  120., 0., 0.,
      35.,  48.,  45.,  60.,  104., 136., 63.,  80.,  77.,  96.,  0., 0.,
      65.,  84.,  75.,  96.,  176., 220., 105., 128., 119., 144., 0., 0.,
      0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0., 0.,
      9.,   20.,  27.,  40.,  56.,  84.,  33.,  48.,  55.,  72.,  0., 0.,
      63.,  80.,  81.,  100., 176., 216., 99.,  120., 121., 144., 0., 0.,
      130., 168., 174., 216., 376., 464., 210., 256., 262., 312., 0., 0.,
      91.,  112., 117., 140., 248., 296., 135., 160., 165., 192., 0., 0.,
      169., 196., 195., 224., 416., 476., 225., 256., 255., 288., 0., 0.,
      0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0., 0.,
      17.,  36.,  51.,  72.,  104., 148., 57.,  80.,  95.,  120., 0., 0.,
      119., 144., 153., 180., 320., 376., 171., 200., 209., 240., 0., 0.,
      242., 296., 318., 376., 664., 784., 354., 416., 438., 504., 0., 0.,
      147., 176., 189., 220., 392., 456., 207., 240., 253., 288., 0., 0.,
      273., 308., 315., 352., 656., 732., 345., 384., 391., 432., 0., 0.,
      0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0., 0.};
  const std::array<int, 4> in_shape = {{3, 6, 6, 2}};
  const int multiplier = 1;
  const auto padding = sycldnn::PaddingMode::VALID;
  const DataType max_input_val = 2048.0;
  this->run_input_backprop_test(exp_out, in_shape, multiplier, padding,
                                max_input_val);
}
TYPED_TEST(InputBackpropWindow3Stride2, SAME3x6x6x2x2) {
  using DataType = typename TestFixture::DataType;
  const std::vector<DataType> exp_out = {
      5.,    25.,    17.,    53.,    46.,   134.,   61.,    113.,   134.,
      254.,  105.,   173.,   41.,    109.,  53.,    137.,   214.,   398.,
      193.,  293.,   494.,   710.,   333.,  449.,   118.,   302.,   238.,
      454.,  692.,   1156.,  518.,   766.,  1252.,  1780.,  798.,   1078.,
      365.,  481.,   473.,   605.,   1054., 1334.,  613.,   761.,   1334.,
      1646., 753.,   917.,   766.,   1046., 1078.,  1390.,  2372.,  3028.,
      1358., 1702.,  2932.,  3652.,  1638., 2014.,  689.,   853.,   893.,
      1073., 1894.,  2270.,  1033.,  1229., 2174.,  2582.,  1173.,  1385.,
      113.,  277.,   413.,   593.,   838.,  1214.,  457.,   653.,   926.,
      1334., 501.,   713.,   1013.,  1225., 1313.,  1541.,  2734.,  3206.,
      1453., 1697.,  3014.,  3518.,  1593., 1853.,  2062.,  2534.,  2758.,
      3262., 5732.,  6772.,  3038.,  3574., 6292.,  7396.,  3318.,  3886.,
      1337., 1597.,  1733.,  2009.,  3574., 4142.,  1873.,  2165.,  3854.,
      4454., 2013.,  2321.,  2710.,  3278., 3598.,  4198.,  7412.,  8644.,
      3878., 4510.,  7972.,  9268.,  4158., 4822.,  1661.,  1969.,  2153.,
      2477., 4414.,  5078.,  2293.,  2633., 4694.,  5390.,  2433.,  2789.,
      221.,  529.,   809.,   1133.,  1630., 2294.,  853.,   1193.,  1718.,
      2414., 897.,   1253.,  1985.,  2341., 2573.,  2945.,  5254.,  6014.,
      2713., 3101.,  5534.,  6326.,  2853., 3257.,  4006.,  4766.,  5278.,
      6070., 10772., 12388., 5558.,  6382., 11332., 13012., 5838.,  6694.,
      2309., 2713.,  2993.,  3413.,  6094., 6950.,  3133.,  3569.,  6374.,
      7262., 3273.,  3725.,  4654.,  5510., 6118.,  7006.,  12452., 14260.,
      6398., 7318.,  13012., 14884., 6678., 7630.,  2633.,  3085.,  3413.,
      3881., 6934.,  7886.,  3553.,  4037., 7214.,  8198.,  3693.,  4193.};
  const std::array<int, 4> in_shape = {{3, 6, 6, 2}};
  const int multiplier = 2;
  const auto padding = sycldnn::PaddingMode::SAME;
  const DataType max_input_val = 2048.0;
  this->run_input_backprop_test(exp_out, in_shape, multiplier, padding,
                                max_input_val);
}
TYPED_TEST(InputBackpropWindow3Stride2, VALID3x6x6x2x2) {
  using DataType = typename TestFixture::DataType;
  const std::vector<DataType> exp_out = {
      5.,    25.,   17.,   53.,   46.,   134.,  61.,   113.,  105.,  173.,
      0.,    0.,    41.,   109.,  53.,   137.,  214.,  398.,  193.,  293.,
      237.,  353.,  0.,    0.,    106.,  274.,  194.,  394.,  604.,  1036.,
      474.,  706.,  626.,  890.,  0.,    0.,    257.,  357.,  333.,  449.,
      774.,  1022., 473.,  605.,  581.,  729.,  0.,    0.,    485.,  633.,
      561.,  725.,  1326., 1670., 797.,  977.,  905.,  1101., 0.,    0.,
      0.,    0.,    0.,    0.,    0.,    0.,    0.,    0.,    0.,    0.,
      0.,    0.,    53.,   137.,  193.,  293.,  398.,  614.,  237.,  353.,
      409.,  541.,  0.,    0.,    473.,  605.,  613.,  761.,  1334., 1646.,
      753.,  917.,  925.,  1105., 0.,    0.,    970.,  1266., 1314., 1642.,
      2844., 3532., 1594., 1954., 2002., 2394., 0.,    0.,    689.,  853.,
      893.,  1073., 1894., 2270., 1033., 1229., 1269., 1481., 0.,    0.,
      1301., 1513., 1505., 1733., 3214., 3686., 1741., 1985., 1977., 2237.,
      0.,    0.,    0.,    0.,    0.,    0.,    0.,    0.,    0.,    0.,
      0.,    0.,    0.,    0.,    101.,  249.,  369.,  533.,  750.,  1094.,
      413.,  593.,  713.,  909.,  0.,    0.,    905.,  1101., 1173., 1385.,
      2454., 2894., 1313., 1541., 1613., 1857., 0.,    0.,    1834., 2258.,
      2434., 2890., 5084., 6028., 2714., 3202., 3378., 3898., 0.,    0.,
      1121., 1349., 1453., 1697., 3014., 3518., 1593., 1853., 1957., 2233.,
      0.,    0.,    2117., 2393., 2449., 2741., 5102., 5702., 2685., 2993.,
      3049., 3373., 0.,    0.,    0.,    0.,    0.,    0.,    0.,    0.,
      0.,    0.,    0.,    0.,    0.,    0.};
  const std::array<int, 4> in_shape = {{3, 6, 6, 2}};
  const int multiplier = 2;
  const auto padding = sycldnn::PaddingMode::VALID;
  const DataType max_input_val = 2048.0;
  this->run_input_backprop_test(exp_out, in_shape, multiplier, padding,
                                max_input_val);
}
TYPED_TEST(InputBackpropWindow3Stride2, SAME3x6x6x2x4) {
  using DataType = typename TestFixture::DataType;
  const std::vector<DataType> exp_out = {
      30.,     174.,    110.,   382.,   300.,   972.,    446.,   846.,
      972.,    1900.,   782.,   1310.,  270.,   798.,    350.,   1006.,
      1548.,   2988.,   1454.,  2238.,  3756.,  5452.,   2558.,  3470.,
      780.,    2220.,   1708.,  3404.,  5112.,  8760.,   3916.,  5868.,
      9528.,   13688.,  6124.,  8332.,  2814.,  3726.,   3662.,  4702.,
      8172.,   10380.,  4766.,  5934.,  10380., 12844.,  5870.,  7166.,
      5868.,   8076.,   8332.,  10796., 18360., 23544.,  10540., 13260.,
      22776.,  28472.,  12748., 15724., 5358.,  6654.,   6974.,  8398.,
      14796.,  17772.,  8078.,  9630.,  17004., 20236.,  9182.,  10862.,
      750.,    2046.,   3134.,  4558.,  6348.,  9324.,   3470.,  5022.,
      7020.,   10252.,  3806.,  5486.,  7902.,  9582.,   10286., 12094.,
      21420.,  25164.,  11390., 13326., 23628., 27628.,  12494., 14558.,
      16044.,  19788.,  21580., 25580., 44856., 53112.,  23788., 28044.,
      49272.,  58040.,  25996., 30508., 10446., 12510.,  13598., 15790.,
      28044.,  32556.,  14702., 17022., 30252., 35020.,  15806., 18254.,
      21132.,  25644.,  28204., 32972., 58104., 67896.,  30412., 35436.,
      62520.,  72824.,  32620., 37900., 12990., 15438.,  16910., 19486.,
      34668.,  39948.,  18014., 20718., 36876., 42412.,  19118., 21950.,
      1470.,   3918.,   6158.,  8734.,  12396., 17676.,  6494.,  9198.,
      13068.,  18604.,  6830.,  9662.,  15534., 18366.,  20222., 23182.,
      41292.,  47340.,  21326., 24414., 43500., 49804.,  22430., 25646.,
      31308.,  37356.,  41452., 47756., 84600., 97464.,  43660., 50220.,
      89016.,  102392., 45868., 52684., 18078., 21294.,  23534., 26878.,
      47916.,  54732.,  24638., 28110., 50124., 57196.,  25742., 29342.,
      36396.,  43212.,  48076., 55148., 97848., 112248., 50284., 57612.,
      102264., 117176., 52492., 60076., 20622., 24222.,  26846., 30574.,
      54540.,  62124.,  27950., 31806., 56748., 64588.,  29054., 33038.};
  const std::array<int, 4> in_shape = {{3, 6, 6, 2}};
  const int multiplier = 4;
  const auto padding = sycldnn::PaddingMode::SAME;
  const DataType max_input_val = 2048.0;
  this->run_input_backprop_test(exp_out, in_shape, multiplier, padding,
                                max_input_val);
}
TYPED_TEST(InputBackpropWindow3Stride2, VALID3x6x6x2x4) {
  using DataType = typename TestFixture::DataType;
  const std::vector<DataType> exp_out = {
      30.,    174.,   110.,   382.,   300.,   972.,   446.,   846.,   782.,
      1310.,  0.,     0.,     270.,   798.,   350.,   1006.,  1548.,  2988.,
      1454.,  2238.,  1790.,  2702.,  0.,     0.,     700.,   2012.,  1372.,
      2940.,  4440.,  7832.,  3580.,  5404.,  4764.,  6844.,  0.,     0.,
      1966.,  2750.,  2558.,  3470.,  5964.,  7916.,  3662.,  4702.,  4510.,
      5678.,  0.,     0.,     3742.,  4910.,  4334.,  5630.,  10284., 13004.,
      6206.,  7630.,  7054.,  8606.,  0.,     0.,     0.,     0.,     0.,
      0.,     0.,     0.,     0.,     0.,     0.,     0.,     0.,     0.,
      350.,   1006.,  1454.,  2238.,  2988.,  4684.,  1790.,  2702.,  3150.,
      4190.,  0.,     0.,     3662.,  4702.,  4766.,  5934.,  10380., 12844.,
      5870.,  7166.,  7230.,  8654.,  0.,     0.,     7484.,  9820.,  10204.,
      12796., 22104., 27544., 12412., 15260., 15644., 18748., 0.,     0.,
      5358.,  6654.,  6974.,  8398.,  14796., 17772., 8078.,  9630.,  9950.,
      11630., 0.,     0.,     10206., 11886., 11822., 13630., 25260., 29004.,
      13694., 15630., 15566., 17630., 0.,     0.,     0.,     0.,     0.,
      0.,     0.,     0.,     0.,     0.,     0.,     0.,     0.,     0.,
      670.,   1838.,  2798.,  4094.,  5676.,  8396.,  3134.,  4558.,  5518.,
      7070.,  0.,     0.,     7054.,  8606.,  9182.,  10862., 19212., 22700.,
      10286., 12094., 12670., 14606., 0.,     0.,     14268., 17628., 19036.,
      22652., 39768., 47256., 21244., 25116., 26524., 30652., 0.,     0.,
      8750.,  10558., 11390., 13326., 23628., 27628., 12494., 14558., 15390.,
      17582., 0.,     0.,     16670., 18862., 19310., 21630., 40236., 45004.,
      21182., 23630., 24078., 26654., 0.,     0.,     0.,     0.,     0.,
      0.,     0.,     0.,     0.,     0.,     0.,     0.,     0.,     0.};
  const std::array<int, 4> in_shape = {{3, 6, 6, 2}};
  const int multiplier = 4;
  const auto padding = sycldnn::PaddingMode::VALID;
  const DataType max_input_val = 2048.0;
  this->run_input_backprop_test(exp_out, in_shape, multiplier, padding,
                                max_input_val);
}
TYPED_TEST(InputBackpropWindow3Stride2, SAME3x6x6x4x1) {
  using DataType = typename TestFixture::DataType;
  const std::vector<DataType> exp_out = {
      1.,    4.,    9.,    16.,   5.,    12.,   21.,   32.,   14.,   32.,
      54.,   80.,   25.,   36.,   49.,   64.,   54.,   80.,   110.,  144.,
      45.,   60.,   77.,   96.,   13.,   28.,   45.,   64.,   17.,   36.,
      57.,   80.,   86.,   128.,  174.,  224.,  85.,   108.,  133.,  160.,
      222.,  272.,  326.,  384.,  153.,  180.,  209.,  240.,  38.,   80.,
      126.,  176.,  94.,   144.,  198.,  256.,  292.,  400.,  516.,  640.,
      230.,  288.,  350.,  416.,  564.,  688.,  820.,  960.,  366.,  432.,
      502.,  576.,  169.,  196.,  225.,  256.,  221.,  252.,  285.,  320.,
      494.,  560.,  630.,  704.,  289.,  324.,  361.,  400.,  630.,  704.,
      782.,  864.,  357.,  396.,  437.,  480.,  350.,  416.,  486.,  560.,
      502.,  576.,  654.,  736.,  1108., 1264., 1428., 1600., 638.,  720.,
      806.,  896.,  1380., 1552., 1732., 1920., 774.,  864.,  958.,  1056.,
      325.,  364.,  405.,  448.,  425.,  468.,  513.,  560.,  902.,  992.,
      1086., 1184., 493.,  540.,  589.,  640.,  1038., 1136., 1238., 1344.,
      561.,  612.,  665.,  720.,  37.,   76.,   117.,  160.,  185.,  228.,
      273.,  320.,  374.,  464.,  558.,  656.,  205.,  252.,  301.,  352.,
      414.,  512.,  614.,  720.,  225.,  276.,  329.,  384.,  481.,  532.,
      585.,  640.,  629.,  684.,  741.,  800.,  1310., 1424., 1542., 1664.,
      697.,  756.,  817.,  880.,  1446., 1568., 1694., 1824., 765.,  828.,
      893.,  960.,  974.,  1088., 1206., 1328., 1318., 1440., 1566., 1696.,
      2740., 2992., 3252., 3520., 1454., 1584., 1718., 1856., 3012., 3280.,
      3556., 3840., 1590., 1728., 1870., 2016., 637.,  700.,  765.,  832.,
      833.,  900.,  969.,  1040., 1718., 1856., 1998., 2144., 901.,  972.,
      1045., 1120., 1854., 2000., 2150., 2304., 969.,  1044., 1121., 1200.,
      1286., 1424., 1566., 1712., 1726., 1872., 2022., 2176., 3556., 3856.,
      4164., 4480., 1862., 2016., 2174., 2336., 3828., 4144., 4468., 4800.,
      1998., 2160., 2326., 2496., 793.,  868.,  945.,  1024., 1037., 1116.,
      1197., 1280., 2126., 2288., 2454., 2624., 1105., 1188., 1273., 1360.,
      2262., 2432., 2606., 2784., 1173., 1260., 1349., 1440., 73.,   148.,
      225.,  304.,  365.,  444.,  525.,  608.,  734.,  896.,  1062., 1232.,
      385.,  468.,  553.,  640.,  774.,  944.,  1118., 1296., 405.,  492.,
      581.,  672.,  949.,  1036., 1125., 1216., 1241., 1332., 1425., 1520.,
      2534., 2720., 2910., 3104., 1309., 1404., 1501., 1600., 2670., 2864.,
      3062., 3264., 1377., 1476., 1577., 1680., 1910., 2096., 2286., 2480.,
      2542., 2736., 2934., 3136., 5188., 5584., 5988., 6400., 2678., 2880.,
      3086., 3296., 5460., 5872., 6292., 6720., 2814., 3024., 3238., 3456.,
      1105., 1204., 1305., 1408., 1445., 1548., 1653., 1760., 2942., 3152.,
      3366., 3584., 1513., 1620., 1729., 1840., 3078., 3296., 3518., 3744.,
      1581., 1692., 1805., 1920., 2222., 2432., 2646., 2864., 2950., 3168.,
      3390., 3616., 6004., 6448., 6900., 7360., 3086., 3312., 3542., 3776.,
      6276., 6736., 7204., 7680., 3222., 3456., 3694., 3936., 1261., 1372.,
      1485., 1600., 1649., 1764., 1881., 2000., 3350., 3584., 3822., 4064.,
      1717., 1836., 1957., 2080., 3486., 3728., 3974., 4224., 1785., 1908.,
      2033., 2160.};
  const std::array<int, 4> in_shape = {{3, 6, 6, 4}};
  const int multiplier = 1;
  const auto padding = sycldnn::PaddingMode::SAME;
  const DataType max_input_val = 2048.0;
  this->run_input_backprop_test(exp_out, in_shape, multiplier, padding,
                                max_input_val);
}
TYPED_TEST(InputBackpropWindow3Stride2, VALID3x6x6x4x1) {
  using DataType = typename TestFixture::DataType;
  const std::vector<DataType> exp_out = {
      1.,    4.,    9.,    16.,   5.,    12.,   21.,   32.,   14.,   32.,
      54.,   80.,   25.,   36.,   49.,   64.,   45.,   60.,   77.,   96.,
      0.,    0.,    0.,    0.,    13.,   28.,   45.,   64.,   17.,   36.,
      57.,   80.,   86.,   128.,  174.,  224.,  85.,   108.,  133.,  160.,
      105.,  132.,  161.,  192.,  0.,    0.,    0.,    0.,    34.,   72.,
      114.,  160.,  74.,   120.,  170.,  224.,  252.,  352.,  460.,  576.,
      210.,  264.,  322.,  384.,  282.,  344.,  410.,  480.,  0.,    0.,
      0.,    0.,    117.,  140.,  165.,  192.,  153.,  180.,  209.,  240.,
      358.,  416.,  478.,  544.,  221.,  252.,  285.,  320.,  273.,  308.,
      345.,  384.,  0.,    0.,    0.,    0.,    225.,  260.,  297.,  336.,
      261.,  300.,  341.,  384.,  622.,  704.,  790.,  880.,  377.,  420.,
      465.,  512.,  429.,  476.,  525.,  576.,  0.,    0.,    0.,    0.,
      0.,    0.,    0.,    0.,    0.,    0.,    0.,    0.,    0.,    0.,
      0.,    0.,    0.,    0.,    0.,    0.,    0.,    0.,    0.,    0.,
      0.,    0.,    0.,    0.,    17.,   36.,   57.,   80.,   85.,   108.,
      133.,  160.,  174.,  224.,  278.,  336.,  105.,  132.,  161.,  192.,
      189.,  220.,  253.,  288.,  0.,    0.,    0.,    0.,    221.,  252.,
      285.,  320.,  289.,  324.,  361.,  400.,  630.,  704.,  782.,  864.,
      357.,  396.,  437.,  480.,  441.,  484.,  529.,  576.,  0.,    0.,
      0.,    0.,    450.,  520.,  594.,  672.,  618.,  696.,  778.,  864.,
      1340., 1504., 1676., 1856., 754.,  840.,  930.,  1024., 954.,  1048.,
      1146., 1248., 0.,    0.,    0.,    0.,    325.,  364.,  405.,  448.,
      425.,  468.,  513.,  560.,  902.,  992.,  1086., 1184., 493.,  540.,
      589.,  640.,  609.,  660.,  713.,  768.,  0.,    0.,    0.,    0.,
      625.,  676.,  729.,  784.,  725.,  780.,  837.,  896.,  1550., 1664.,
      1782., 1904., 841.,  900.,  961.,  1024., 957.,  1020., 1085., 1152.,
      0.,    0.,    0.,    0.,    0.,    0.,    0.,    0.,    0.,    0.,
      0.,    0.,    0.,    0.,    0.,    0.,    0.,    0.,    0.,    0.,
      0.,    0.,    0.,    0.,    0.,    0.,    0.,    0.,    33.,   68.,
      105.,  144.,  165.,  204.,  245.,  288.,  334.,  416.,  502.,  592.,
      185.,  228.,  273.,  320.,  333.,  380.,  429.,  480.,  0.,    0.,
      0.,    0.,    429.,  476.,  525.,  576.,  561.,  612.,  665.,  720.,
      1174., 1280., 1390., 1504., 629.,  684.,  741.,  800.,  777.,  836.,
      897.,  960.,  0.,    0.,    0.,    0.,    866.,  968.,  1074., 1184.,
      1162., 1272., 1386., 1504., 2428., 2656., 2892., 3136., 1298., 1416.,
      1538., 1664., 1626., 1752., 1882., 2016., 0.,    0.,    0.,    0.,
      533.,  588.,  645.,  704.,  697.,  756.,  817.,  880.,  1446., 1568.,
      1694., 1824., 765.,  828.,  893.,  960.,  945.,  1012., 1081., 1152.,
      0.,    0.,    0.,    0.,    1025., 1092., 1161., 1232., 1189., 1260.,
      1333., 1408., 2478., 2624., 2774., 2928., 1305., 1380., 1457., 1536.,
      1485., 1564., 1645., 1728., 0.,    0.,    0.,    0.,    0.,    0.,
      0.,    0.,    0.,    0.,    0.,    0.,    0.,    0.,    0.,    0.,
      0.,    0.,    0.,    0.,    0.,    0.,    0.,    0.,    0.,    0.,
      0.,    0.};
  const std::array<int, 4> in_shape = {{3, 6, 6, 4}};
  const int multiplier = 1;
  const auto padding = sycldnn::PaddingMode::VALID;
  const DataType max_input_val = 2048.0;
  this->run_input_backprop_test(exp_out, in_shape, multiplier, padding,
                                max_input_val);
}
TYPED_TEST(InputBackpropWindow3Stride2, SAME3x6x6x4x2) {
  using DataType = typename TestFixture::DataType;
  const std::vector<DataType> exp_out = {
      5.,     25.,    61.,    113.,   29.,    81.,    149.,   233.,   82.,
      218.,   386.,   586.,   181.,   265.,   365.,   481.,   386.,   586.,
      818.,   1082.,  333.,   449.,   581.,   729.,   77.,    193.,   325.,
      473.,   101.,   249.,   413.,   593.,   610.,   938.,   1298.,  1690.,
      637.,   817.,   1013.,  1225.,  1682.,  2074.,  2498.,  2954.,  1173.,
      1385.,  1613.,  1857.,  226.,   554.,   914.,   1306.,  658.,   1050.,
      1474.,  1930.,  2132.,  2980.,  3892.,  4868.,  1730.,  2186.,  2674.,
      3194.,  4276.,  5252.,  6292.,  7396.,  2802.,  3322.,  3874.,  4458.,
      1301.,  1513.,  1741.,  1985.,  1709.,  1953.,  2213.,  2489.,  3826.,
      4346.,  4898.,  5482.,  2245.,  2521.,  2813.,  3121.,  4898.,  5482.,
      6098.,  6746.,  2781.,  3089.,  3413.,  3753.,  2674.,  3194.,  3746.,
      4330.,  3874.,  4458.,  5074.,  5722.,  8564.,  9796.,  11092., 12452.,
      4946.,  5594.,  6274.,  6986.,  10708., 12068., 13492., 14980., 6018.,
      6730.,  7474.,  8250.,  2525.,  2833.,  3157.,  3497.,  3317.,  3657.,
      4013.,  4385.,  7042.,  7754.,  8498.,  9274.,  3853.,  4225.,  4613.,
      5017.,  8114.,  8890.,  9698.,  10538., 4389.,  4793.,  5213.,  5649.,
      221.,   529.,   853.,   1193.,  1397.,  1737.,  2093.,  2465.,  2818.,
      3530.,  4274.,  5050.,  1549.,  1921.,  2309.,  2713.,  3122.,  3898.,
      4706.,  5546.,  1701.,  2105.,  2525.,  2961.,  3749.,  4153.,  4573.,
      5009.,  4925.,  5361.,  5813.,  6281.,  10258., 11162., 12098., 13066.,
      5461.,  5929.,  6413.,  6913.,  11330., 12298., 13298., 14330., 5997.,
      6497.,  7013.,  7545.,  7570.,  8474.,  9410.,  10378., 10306., 11274.,
      12274., 13306., 21428., 23428., 25492., 27620., 11378., 12410., 13474.,
      14570., 23572., 25700., 27892., 30148., 12450., 13546., 14674., 15834.,
      4973.,  5473.,  5989.,  6521.,  6533.,  7065.,  7613.,  8177.,  13474.,
      14570., 15698., 16858., 7069.,  7633.,  8213.,  8809.,  14546., 15706.,
      16898., 18122., 7605.,  8201.,  8813.,  9441.,  10018., 11114., 12242.,
      13402., 13522., 14682., 15874., 17098., 27860., 30244., 32692., 35204.,
      14594., 15818., 17074., 18362., 30004., 32516., 35092., 37732., 15666.,
      16954., 18274., 19626., 6197.,  6793.,  7405.,  8033.,  8141.,  8769.,
      9413.,  10073., 16690., 17978., 19298., 20650., 8677.,  9337.,  10013.,
      10705., 17762., 19114., 20498., 21914., 9213.,  9905.,  10613., 11337.,
      437.,   1033.,  1645.,  2273.,  2765.,  3393.,  4037.,  4697.,  5554.,
      6842.,  8162.,  9514.,  2917.,  3577.,  4253.,  4945.,  5858.,  7210.,
      8594.,  10010., 3069.,  3761.,  4469.,  5193.,  7421.,  8113.,  8821.,
      9545.,  9749.,  10473., 11213., 11969., 19906., 21386., 22898., 24442.,
      10285., 11041., 11813., 12601., 20978., 22522., 24098., 25706., 10821.,
      11609., 12413., 13233., 14914., 16394., 17906., 19450., 19954., 21498.,
      23074., 24682., 40724., 43876., 47092., 50372., 21026., 22634., 24274.,
      25946., 42868., 46148., 49492., 52900., 22098., 23770., 25474., 27210.,
      8645.,  9433.,  10237., 11057., 11357., 12177., 13013., 13865., 23122.,
      24794., 26498., 28234., 11893., 12745., 13613., 14497., 24194., 25930.,
      27698., 29498., 12429., 13313., 14213., 15129., 17362., 19034., 20738.,
      22474., 23170., 24906., 26674., 28474., 47156., 50692., 54292., 57956.,
      24242., 26042., 27874., 29738., 49300., 52964., 56692., 60484., 25314.,
      27178., 29074., 31002., 9869.,  10753., 11653., 12569., 12965., 13881.,
      14813., 15761., 26338., 28202., 30098., 32026., 13501., 14449., 15413.,
      16393., 27410., 29338., 31298., 33290., 14037., 15017., 16013., 17025.};
  const std::array<int, 4> in_shape = {{3, 6, 6, 4}};
  const int multiplier = 2;
  const auto padding = sycldnn::PaddingMode::SAME;
  const DataType max_input_val = 2048.0;
  this->run_input_backprop_test(exp_out, in_shape, multiplier, padding,
                                max_input_val);
}
TYPED_TEST(InputBackpropWindow3Stride2, VALID3x6x6x4x2) {
  using DataType = typename TestFixture::DataType;
  const std::vector<DataType> exp_out = {
      5.,     25.,    61.,    113.,   29.,    81.,    149.,   233.,   82.,
      218.,   386.,   586.,   181.,   265.,   365.,   481.,   333.,   449.,
      581.,   729.,   0.,     0.,     0.,     0.,     77.,    193.,   325.,
      473.,   101.,   249.,   413.,   593.,   610.,   938.,   1298.,  1690.,
      637.,   817.,   1013.,  1225.,  789.,   1001.,  1229.,  1473.,  0.,
      0.,     0.,     0.,     202.,   498.,   826.,   1186.,  506.,   866.,
      1258.,  1682.,  1828.,  2612.,  3460.,  4372.,  1578.,  2002.,  2458.,
      2946.,  2138.,  2626.,  3146.,  3698.,  0.,     0.,     0.,     0.,
      893.,   1073.,  1269.,  1481.,  1173.,  1385.,  1613.,  1857.,  2754.,
      3210.,  3698.,  4218.,  1709.,  1953.,  2213.,  2489.,  2117.,  2393.,
      2685.,  2993.,  0.,     0.,     0.,     0.,     1733.,  2009.,  2301.,
      2609.,  2013.,  2321.,  2645.,  2985.,  4818.,  5466.,  6146.,  6858.,
      2933.,  3273.,  3629.,  4001.,  3341.,  3713.,  4101.,  4505.,  0.,
      0.,     0.,     0.,     0.,     0.,     0.,     0.,     0.,     0.,
      0.,     0.,     0.,     0.,     0.,     0.,     0.,     0.,     0.,
      0.,     0.,     0.,     0.,     0.,     0.,     0.,     0.,     0.,
      101.,   249.,   413.,   593.,   637.,   817.,   1013.,  1225.,  1298.,
      1690.,  2114.,  2570.,  789.,   1001.,  1229.,  1473.,  1453.,  1697.,
      1957.,  2233.,  0.,     0.,     0.,     0.,     1709.,  1953.,  2213.,
      2489.,  2245.,  2521.,  2813.,  3121.,  4898.,  5482.,  6098.,  6746.,
      2781.,  3089.,  3413.,  3753.,  3445.,  3785.,  4141.,  4513.,  0.,
      0.,     0.,     0.,     3466.,  4018.,  4602.,  5218.,  4794.,  5410.,
      6058.,  6738.,  10404., 11700., 13060., 14484., 5866.,  6546.,  7258.,
      8002.,  7450.,  8194.,  8970.,  9778.,  0.,     0.,     0.,     0.,
      2525.,  2833.,  3157.,  3497.,  3317.,  3657.,  4013.,  4385.,  7042.,
      7754.,  8498.,  9274.,  3853.,  4225.,  4613.,  5017.,  4773.,  5177.,
      5597.,  6033.,  0.,     0.,     0.,     0.,     4901.,  5305.,  5725.,
      6161.,  5693.,  6129.,  6581.,  7049.,  12178., 13082., 14018., 14986.,
      6613.,  7081.,  7565.,  8065.,  7533.,  8033.,  8549.,  9081.,  0.,
      0.,     0.,     0.,     0.,     0.,     0.,     0.,     0.,     0.,
      0.,     0.,     0.,     0.,     0.,     0.,     0.,     0.,     0.,
      0.,     0.,     0.,     0.,     0.,     0.,     0.,     0.,     0.,
      197.,   473.,   765.,   1073.,  1245.,  1553.,  1877.,  2217.,  2514.,
      3162.,  3842.,  4554.,  1397.,  1737.,  2093.,  2465.,  2573.,  2945.,
      3333.,  3737.,  0.,     0.,     0.,     0.,     3341.,  3713.,  4101.,
      4505.,  4389.,  4793.,  5213.,  5649.,  9186.,  10026., 10898., 11802.,
      4925.,  5361.,  5813.,  6281.,  6101.,  6569.,  7053.,  7553.,  0.,
      0.,     0.,     0.,     6730.,  7538.,  8378.,  9250.,  9082.,  9954.,
      10858., 11794., 18980., 20788., 22660., 24596., 10154., 11090., 12058.,
      13058., 12762., 13762., 14794., 15858., 0.,     0.,     0.,     0.,
      4157.,  4593.,  5045.,  5513.,  5461.,  5929.,  6413.,  6913.,  11330.,
      12298., 13298., 14330., 5997.,  6497.,  7013.,  7545.,  7429.,  7961.,
      8509.,  9073.,  0.,     0.,     0.,     0.,     8069.,  8601.,  9149.,
      9713.,  9373.,  9937.,  10517., 11113., 19538., 20698., 21890., 23114.,
      10293., 10889., 11501., 12129., 11725., 12353., 12997., 13657., 0.,
      0.,     0.,     0.,     0.,     0.,     0.,     0.,     0.,     0.,
      0.,     0.,     0.,     0.,     0.,     0.,     0.,     0.,     0.,
      0.,     0.,     0.,     0.,     0.,     0.,     0.,     0.,     0.};
  const std::array<int, 4> in_shape = {{3, 6, 6, 4}};
  const int multiplier = 2;
  const auto padding = sycldnn::PaddingMode::VALID;
  const DataType max_input_val = 2048.0;
  this->run_input_backprop_test(exp_out, in_shape, multiplier, padding,
                                max_input_val);
}
TYPED_TEST(InputBackpropWindow3Stride2, SAME3x6x6x4x4) {
  using DataType = typename TestFixture::DataType;
  const std::vector<DataType> exp_out = {
      30.,     174.,    446.,    846.,    190.,    590.,    1118.,   1774.,
      540.,    1596.,   2908.,   4476.,   1374.,   2030.,   2814.,   3726.,
      2908.,   4476.,   6300.,   8380.,   2558.,   3470.,   4510.,   5678.,
      510.,    1422.,   2462.,   3630.,   670.,    1838.,   3134.,   4558.,
      4572.,   7164.,   10012.,  13116.,  4926.,   6350.,   7902.,   9582.,
      13084.,  16188.,  19548.,  23164.,  9182.,   10862.,  12670.,  14606.,
      1500.,   4092.,   6940.,   10044.,  4892.,   7996.,   11356.,  14972.,
      16248.,  22968.,  30200.,  37944.,  13404.,  17020.,  20892.,  25020.,
      33272.,  41016.,  49272.,  58040.,  21916.,  26044.,  30428.,  35068.,
      10206.,  11886.,  13694.,  15630.,  13438.,  15374.,  17438.,  19630.,
      30108.,  34236.,  38620.,  43260.,  17694.,  19886.,  22206.,  24654.,
      38620.,  43260.,  48156.,  53308.,  21950.,  24398.,  26974.,  29678.,
      20892.,  25020.,  29404.,  34044.,  30428.,  35068.,  39964.,  45116.,
      67320.,  77112.,  87416.,  98232.,  38940.,  44092.,  49500.,  55164.,
      84344.,  95160.,  106488., 118328., 47452.,  53116.,  59036.,  65212.,
      19902.,  22350.,  24926.,  27630.,  26206.,  28910.,  31742.,  34702.,
      55644.,  61308.,  67228.,  73404.,  30462.,  33422.,  36510.,  39726.,
      64156.,  70332.,  76764.,  83452.,  34718.,  37934.,  41278.,  44750.,
      1470.,   3918.,   6494.,   9198.,   10846.,  13550.,  16382.,  19342.,
      21852.,  27516.,  33436.,  39612.,  12030.,  14990.,  18078.,  21294.,
      24220.,  30396.,  36828.,  43516.,  13214.,  16430.,  19774.,  23246.,
      29598.,  32814.,  36158.,  39630.,  38974.,  42446.,  46046.,  49774.,
      81180.,  88380.,  95836.,  103548., 43230.,  46958.,  50814.,  54798.,
      89692.,  97404.,  105372., 113596., 47486.,  51470.,  55582.,  59822.,
      59676.,  66876.,  74332.,  82044.,  81500.,  89212.,  97180.,  105404.,
      169464., 185400., 201848., 218808., 90012.,  98236.,  106716., 115452.,
      186488., 203448., 220920., 238904., 98524.,  107260., 116252., 125500.,
      39294.,  43278.,  47390.,  51630.,  51742.,  55982.,  60350.,  64846.,
      106716., 115452., 124444., 133692., 55998.,  60494.,  65118.,  69870.,
      115228., 124476., 133980., 143740., 60254.,  65006.,  69886.,  74894.,
      79068.,  87804.,  96796.,  106044., 107036., 116284., 125788., 135548.,
      220536., 239544., 259064., 279096., 115548., 125308., 135324., 145596.,
      237560., 257592., 278136., 299192., 124060., 134332., 144860., 155644.,
      48990.,  53742.,  58622.,  63630.,  64510.,  69518.,  74654.,  79918.,
      132252., 142524., 153052., 163836., 68766.,  74030.,  79422.,  84942.,
      140764., 151548., 162588., 173884., 73022.,  78542.,  84190.,  89966.,
      2910.,   7662.,   12542.,  17550.,  21502.,  26510.,  31646.,  36910.,
      43164.,  53436.,  63964.,  74748.,  22686.,  27950.,  33342.,  38862.,
      45532.,  56316.,  67356.,  78652.,  23870.,  29390.,  35038.,  40814.,
      58686.,  64206.,  69854.,  75630.,  77278.,  83054.,  88958.,  94990.,
      157788., 169596., 181660., 193980., 81534.,  87566.,  93726.,  100014.,
      166300., 178620., 191196., 204028., 85790.,  92078.,  98494.,  105038.,
      117852., 129660., 141724., 154044., 158108., 170428., 183004., 195836.,
      322680., 347832., 373496., 399672., 166620., 179452., 192540., 205884.,
      339704., 365880., 392568., 419768., 175132., 188476., 202076., 215932.,
      68382.,  74670.,  81086.,  87630.,  90046.,  96590.,  103262., 110062.,
      183324., 196668., 210268., 224124., 94302.,  101102., 108030., 115086.,
      191836., 205692., 219804., 234172., 98558.,  105614., 112798., 120110.,
      137244., 150588., 164188., 178044., 183644., 197500., 211612., 225980.,
      373752., 401976., 430712., 459960., 192156., 206524., 221148., 236028.,
      390776., 420024., 449784., 480056., 200668., 215548., 230684., 246076.,
      78078.,  85134.,  92318.,  99630.,  102814., 110126., 117566., 125134.,
      208860., 223740., 238876., 254268., 107070., 114638., 122334., 130158.,
      217372., 232764., 248412., 264316., 111326., 119150., 127102., 135182.};
  const std::array<int, 4> in_shape = {{3, 6, 6, 4}};
  const int multiplier = 4;
  const auto padding = sycldnn::PaddingMode::SAME;
  const DataType max_input_val = 2048.0;
  this->run_input_backprop_test(exp_out, in_shape, multiplier, padding,
                                max_input_val);
}
TYPED_TEST(InputBackpropWindow3Stride2, VALID3x6x6x4x4) {
  using DataType = typename TestFixture::DataType;
  const std::vector<DataType> exp_out = {
      30.,     174.,    446.,    846.,    190.,   590.,   1118.,  1774.,
      540.,    1596.,   2908.,   4476.,   1374.,  2030.,  2814.,  3726.,
      2558.,   3470.,   4510.,   5678.,   0.,     0.,     0.,     0.,
      510.,    1422.,   2462.,   3630.,   670.,   1838.,  3134.,  4558.,
      4572.,   7164.,   10012.,  13116.,  4926.,  6350.,  7902.,  9582.,
      6110.,   7790.,   9598.,   11534.,  0.,     0.,     0.,     0.,
      1340.,   3676.,   6268.,   9116.,   3708.,  6556.,  9660.,  13020.,
      13880.,  20088.,  26808.,  34040.,  12220., 15580., 19196., 23068.,
      16636.,  20508.,  24636.,  29020.,  0.,     0.,     0.,     0.,
      6974.,   8398.,   9950.,   11630.,  9182.,  10862., 12670., 14606.,
      21596.,  25212.,  29084.,  33212.,  13438., 15374., 17438., 19630.,
      16670.,  18862.,  21182.,  23630.,  0.,     0.,     0.,     0.,
      13598.,  15790.,  18110.,  20558.,  15806., 18254., 20830., 23534.,
      37916.,  43068.,  48476.,  54140.,  23134., 25838., 28670., 31630.,
      26366.,  29326.,  32414.,  35630.,  0.,     0.,     0.,     0.,
      0.,      0.,      0.,      0.,      0.,     0.,     0.,     0.,
      0.,      0.,      0.,      0.,      0.,     0.,     0.,     0.,
      0.,      0.,      0.,      0.,      0.,     0.,     0.,     0.,
      670.,    1838.,   3134.,   4558.,   4926.,  6350.,  7902.,  9582.,
      10012.,  13116.,  16476.,  20092.,  6110.,  7790.,  9598.,  11534.,
      11390.,  13326.,  15390.,  17582.,  0.,     0.,     0.,     0.,
      13438.,  15374.,  17438.,  19630.,  17694., 19886., 22206., 24654.,
      38620.,  43260.,  48156.,  53308.,  21950., 24398., 26974., 29678.,
      27230.,  29934.,  32766.,  35726.,  0.,     0.,     0.,     0.,
      27196.,  31580.,  36220.,  41116.,  37756., 42652., 47804., 53212.,
      81976.,  92280.,  103096., 114424., 46268., 51676., 57340., 63260.,
      58876.,  64796.,  70972.,  77404.,  0.,     0.,     0.,     0.,
      19902.,  22350.,  24926.,  27630.,  26206., 28910., 31742., 34702.,
      55644.,  61308.,  67228.,  73404.,  30462., 33422., 36510., 39726.,
      37790.,  41006.,  44350.,  47822.,  0.,     0.,     0.,     0.,
      38814.,  42030.,  45374.,  48846.,  45118., 48590., 52190., 55918.,
      96540.,  103740., 111196., 118908., 52446., 56174., 60030., 64014.,
      59774.,  63758.,  67870.,  72110.,  0.,     0.,     0.,     0.,
      0.,      0.,      0.,      0.,      0.,     0.,     0.,     0.,
      0.,      0.,      0.,      0.,      0.,     0.,     0.,     0.,
      0.,      0.,      0.,      0.,      0.,     0.,     0.,     0.,
      1310.,   3502.,   5822.,   8270.,   9662.,  12110., 14686., 17390.,
      19484.,  24636.,  30044.,  35708.,  10846., 13550., 16382., 19342.,
      20222.,  23182.,  26270.,  29486.,  0.,     0.,     0.,     0.,
      26366.,  29326.,  32414.,  35630.,  34718., 37934., 41278., 44750.,
      72668.,  79356.,  86300.,  93500.,  38974., 42446., 46046., 49774.,
      48350.,  52078.,  55934.,  59918.,  0.,     0.,     0.,     0.,
      53052.,  59484.,  66172.,  73116.,  71804., 78748., 85948., 93404.,
      150072., 164472., 179384., 194808., 80316., 87772., 95484., 103452.,
      101116., 109084., 117308., 125788., 0.,     0.,     0.,     0.,
      32830.,  36302.,  39902.,  43630.,  43230., 46958., 50814., 54798.,
      89692.,  97404.,  105372., 113596., 47486., 51470., 55582., 59822.,
      58910.,  63150.,  67518.,  72014.,  0.,     0.,     0.,     0.,
      64030.,  68270.,  72638.,  77134.,  74430., 78926., 83550., 88302.,
      155164., 164412., 173916., 183676., 81758., 86510., 91390., 96398.,
      93182.,  98190.,  103326., 108590., 0.,     0.,     0.,     0.,
      0.,      0.,      0.,      0.,      0.,     0.,     0.,     0.,
      0.,      0.,      0.,      0.,      0.,     0.,     0.,     0.,
      0.,      0.,      0.,      0.,      0.,     0.,     0.,     0.};
  const std::array<int, 4> in_shape = {{3, 6, 6, 4}};
  const int multiplier = 4;
  const auto padding = sycldnn::PaddingMode::VALID;
  const DataType max_input_val = 2048.0;
  this->run_input_backprop_test(exp_out, in_shape, multiplier, padding,
                                max_input_val);
}
TYPED_TEST(InputBackpropWindow3Stride2, SAME3x6x8x1x1) {
  using DataType = typename TestFixture::DataType;
  const std::vector<DataType> exp_out = {
      1.,   2.,   5.,   4.,   9.,   6.,   13.,  8.,   4.,   5.,   14.,  10.,
      24.,  15.,  34.,  20.,  12.,  18.,  44.,  28.,  64.,  38.,  84.,  48.,
      20.,  25.,  54.,  30.,  64.,  35.,  74.,  40.,  44.,  58.,  124., 68.,
      144., 78.,  164., 88.,  36.,  45.,  94.,  50.,  104., 55.,  114., 60.,
      13.,  26.,  53.,  28.,  57.,  30.,  61.,  32.,  52.,  65.,  134., 70.,
      144., 75.,  154., 80.,  108., 138., 284., 148., 304., 158., 324., 168.,
      68.,  85.,  174., 90.,  184., 95.,  194., 100., 140., 178., 364., 188.,
      384., 198., 404., 208., 84.,  105., 214., 110., 224., 115., 234., 120.,
      25.,  50.,  101., 52.,  105., 54.,  109., 56.,  100., 125., 254., 130.,
      264., 135., 274., 140., 204., 258., 524., 268., 544., 278., 564., 288.,
      116., 145., 294., 150., 304., 155., 314., 160., 236., 298., 604., 308.,
      624., 318., 644., 328., 132., 165., 334., 170., 344., 175., 354., 180.};
  const std::array<int, 4> in_shape = {{3, 6, 8, 1}};
  const int multiplier = 1;
  const auto padding = sycldnn::PaddingMode::SAME;
  const DataType max_input_val = 2048.0;
  this->run_input_backprop_test(exp_out, in_shape, multiplier, padding,
                                max_input_val);
}
TYPED_TEST(InputBackpropWindow3Stride2, VALID3x6x8x1x1) {
  using DataType = typename TestFixture::DataType;
  const std::vector<DataType> exp_out = {
      1.,   2.,   5.,   4.,  9.,   6.,   9.,   0.,   4.,   5.,   14.,  10.,
      24.,  15.,  18.,  0.,  11.,  16.,  40.,  26.,  60.,  36.,  45.,  0.,
      16.,  20.,  44.,  25., 54.,  30.,  36.,  0.,   28.,  32.,  71.,  40.,
      87.,  48.,  54.,  0.,  0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,
      7.,   14.,  29.,  16., 33.,  18.,  27.,  0.,   28.,  35.,  74.,  40.,
      84.,  45.,  54.,  0.,  59.,  76.,  160., 86.,  180., 96.,  117., 0.,
      40.,  50.,  104., 55., 114., 60.,  72.,  0.,   70.,  80.,  167., 88.,
      183., 96.,  108., 0.,  0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,
      13.,  26.,  53.,  28., 57.,  30.,  45.,  0.,   52.,  65.,  134., 70.,
      144., 75.,  90.,  0.,  107., 136., 280., 146., 300., 156., 189., 0.,
      64.,  80.,  164., 85., 174., 90.,  108., 0.,   112., 128., 263., 136.,
      279., 144., 162., 0.,  0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.};
  const std::array<int, 4> in_shape = {{3, 6, 8, 1}};
  const int multiplier = 1;
  const auto padding = sycldnn::PaddingMode::VALID;
  const DataType max_input_val = 2048.0;
  this->run_input_backprop_test(exp_out, in_shape, multiplier, padding,
                                max_input_val);
}
TYPED_TEST(InputBackpropWindow3Stride2, SAME3x6x8x1x2) {
  using DataType = typename TestFixture::DataType;
  const std::vector<DataType> exp_out = {
      5.,    11.,   28.,   25.,   56.,   39.,   84.,   53.,   23.,   29.,
      88.,   67.,   164.,  105.,  240.,  143.,  70.,   114.,  288.,  190.,
      440.,  266.,  592.,  342.,  143.,  181.,  392.,  219.,  468.,  257.,
      544.,  295.,  310.,  418.,  896.,  494.,  1048., 570.,  1200., 646.,
      263.,  333.,  696.,  371.,  772.,  409.,  848.,  447.,  77.,   179.,
      364.,  193.,  392.,  207.,  420.,  221.,  383.,  485.,  1000., 523.,
      1076., 561.,  1152., 599.,  790.,  1026., 2112., 1102., 2264., 1178.,
      2416., 1254., 503.,  637.,  1304., 675.,  1380., 713.,  1456., 751.,
      1030., 1330., 2720., 1406., 2872., 1482., 3024., 1558., 623.,  789.,
      1608., 827.,  1684., 865.,  1760., 903.,  149.,  347.,  700.,  361.,
      728.,  375.,  756.,  389.,  743.,  941.,  1912., 979.,  1988., 1017.,
      2064., 1055., 1510., 1938., 3936., 2014., 4088., 2090., 4240., 2166.,
      863.,  1093., 2216., 1131., 2292., 1169., 2368., 1207., 1750., 2242.,
      4544., 2318., 4696., 2394., 4848., 2470., 983.,  1245., 2520., 1283.,
      2596., 1321., 2672., 1359.};
  const std::array<int, 4> in_shape = {{3, 6, 8, 1}};
  const int multiplier = 2;
  const auto padding = sycldnn::PaddingMode::SAME;
  const DataType max_input_val = 2048.0;
  this->run_input_backprop_test(exp_out, in_shape, multiplier, padding,
                                max_input_val);
}
TYPED_TEST(InputBackpropWindow3Stride2, VALID3x6x8x1x2) {
  using DataType = typename TestFixture::DataType;
  const std::vector<DataType> exp_out = {
      5.,    11.,   28.,   25.,   56.,   39.,   61.,   0.,    23.,   29.,
      88.,   67.,   164.,  105.,  127.,  0.,    64.,   100.,  260.,  176.,
      412.,  252.,  320.,  0.,    113.,  143.,  316.,  181.,  392.,  219.,
      265.,  0.,    203.,  233.,  520.,  295.,  644.,  357.,  403.,  0.,
      0.,    0.,    0.,    0.,    0.,    0.,    0.,    0.,    41.,   95.,
      196.,  109.,  224.,  123.,  193.,  0.,    203.,  257.,  544.,  295.,
      620.,  333.,  403.,  0.,    424.,  556.,  1172., 632.,  1324., 708.,
      872.,  0.,    293.,  371.,  772.,  409.,  848.,  447.,  541.,  0.,
      527.,  605.,  1264., 667.,  1388., 729.,  823.,  0.,    0.,    0.,
      0.,    0.,    0.,    0.,    0.,    0.,    77.,   179.,  364.,  193.,
      392.,  207.,  325.,  0.,    383.,  485.,  1000., 523.,  1076., 561.,
      679.,  0.,    784.,  1012., 2084., 1088., 2236., 1164., 1424., 0.,
      473.,  599.,  1228., 637.,  1304., 675.,  817.,  0.,    851.,  977.,
      2008., 1039., 2132., 1101., 1243., 0.,    0.,    0.,    0.,    0.,
      0.,    0.,    0.,    0.};
  const std::array<int, 4> in_shape = {{3, 6, 8, 1}};
  const int multiplier = 2;
  const auto padding = sycldnn::PaddingMode::VALID;
  const DataType max_input_val = 2048.0;
  this->run_input_backprop_test(exp_out, in_shape, multiplier, padding,
                                max_input_val);
}
TYPED_TEST(InputBackpropWindow3Stride2, SAME3x6x8x1x4) {
  using DataType = typename TestFixture::DataType;
  const std::vector<DataType> exp_out = {
      30.,    70.,    180.,   174.,   388.,   278.,   596.,   382.,   150.,
      190.,   612.,   486.,   1204.,  782.,   1796.,  1078.,  460.,   796.,
      2056.,  1388.,  3240.,  1980.,  4424.,  2572.,  1078.,  1374.,  2980.,
      1670.,  3572.,  1966.,  4164.,  2262.,  2316.,  3164.,  6792.,  3756.,
      7976.,  4348.,  9160.,  4940.,  2006.,  2558.,  5348.,  2854.,  5940.,
      3150.,  6532.,  3446.,  510.,   1318.,  2676.,  1422.,  2884.,  1526.,
      3092.,  1630.,  2934.,  3742.,  7716.,  4038.,  8308.,  4334.,  8900.,
      4630.,  6028.,  7900.,  16264., 8492.,  17448., 9084.,  18632., 9676.,
      3862.,  4926.,  10084., 5222.,  10676., 5518.,  11268., 5814.,  7884.,
      10268., 21000., 10860., 22184., 11452., 23368., 12044., 4790.,  6110.,
      12452., 6406.,  13044., 6702.,  13636., 6998.,  990.,   2566.,  5172.,
      2670.,  5380.,  2774.,  5588.,  2878.,  5718.,  7294.,  14820., 7590.,
      15412., 7886.,  16004., 8182.,  11596., 15004., 30472., 15596., 31656.,
      16188., 32840., 16780., 6646.,  8478.,  17188., 8774.,  17780., 9070.,
      18372., 9366.,  13452., 17372., 35208., 17964., 36392., 18556., 37576.,
      19148., 7574.,  9662.,  19556., 9958.,  20148., 10254., 20740., 10550.};
  const std::array<int, 4> in_shape = {{3, 6, 8, 1}};
  const int multiplier = 4;
  const auto padding = sycldnn::PaddingMode::SAME;
  const DataType max_input_val = 2048.0;
  this->run_input_backprop_test(exp_out, in_shape, multiplier, padding,
                                max_input_val);
}
TYPED_TEST(InputBackpropWindow3Stride2, VALID3x6x8x1x4) {
  using DataType = typename TestFixture::DataType;
  const std::vector<DataType> exp_out = {
      30.,    70.,   180.,   174.,  388.,   278.,  446.,   0.,    150.,   190.,
      612.,   486.,  1204.,  782.,  950.,   0.,    420.,   692.,  1848.,  1284.,
      3032.,  1876., 2404.,  0.,    846.,   1078., 2388.,  1374., 2980.,  1670.,
      2030.,  0.,    1542.,  1774., 3972.,  2262., 4948.,  2750., 3110.,  0.,
      0.,     0.,    0.,     0.,    0.,     0.,    0.,     0.,    270.,   694.,
      1428.,  798.,  1636.,  902.,  1454.,  0.,    1542.,  1966., 4164.,  2262.,
      4756.,  2558., 3110.,  0.,    3204.,  4244., 8952.,  4836., 10136., 5428.,
      6724.,  0.,    2238.,  2854., 5940.,  3150., 6532.,  3446., 4190.,  0.,
      4086.,  4702., 9828.,  5190., 10804., 5678., 6422.,  0.,    0.,     0.,
      0.,     0.,    0.,     0.,    0.,     0.,    510.,   1318., 2676.,  1422.,
      2884.,  1526., 2462.,  0.,    2934.,  3742., 7716.,  4038., 8308.,  4334.,
      5270.,  0.,    5988.,  7796., 16056., 8388., 17240., 8980., 11044., 0.,
      3630.,  4630., 9492.,  4926., 10084., 5222., 6350.,  0.,    6630.,  7630.,
      15684., 8118., 16660., 8606., 9734.,  0.,    0.,     0.,    0.,     0.,
      0.,     0.,    0.,     0.};
  const std::array<int, 4> in_shape = {{3, 6, 8, 1}};
  const int multiplier = 4;
  const auto padding = sycldnn::PaddingMode::VALID;
  const DataType max_input_val = 2048.0;
  this->run_input_backprop_test(exp_out, in_shape, multiplier, padding,
                                max_input_val);
}
TYPED_TEST(InputBackpropWindow3Stride2, SAME3x6x8x2x1) {
  using DataType = typename TestFixture::DataType;
  const std::vector<DataType> exp_out = {
      1.,    4.,    3.,    8.,    8.,    20.,   9.,    16.,   20.,   36.,
      15.,   24.,   32.,   52.,   21.,   32.,   7.,    16.,   9.,    20.,
      32.,   56.,   27.,   40.,   68.,   96.,   45.,   60.,   104.,  136.,
      63.,   80.,   22.,   48.,   42.,   72.,   112.,  176.,  78.,   112.,
      184.,  256.,  114.,  152.,  256.,  336.,  150.,  192.,  63.,   80.,
      81.,   100.,  176.,  216.,  99.,   120.,  212.,  256.,  117.,  140.,
      248.,  296.,  135.,  160.,  134.,  176.,  186.,  232.,  400.,  496.,
      222.,  272.,  472.,  576.,  258.,  312.,  544.,  656.,  294.,  352.,
      119.,  144.,  153.,  180.,  320.,  376.,  171.,  200.,  356.,  416.,
      189.,  220.,  392.,  456.,  207.,  240.,  25.,   52.,   75.,   104.,
      152.,  212.,  81.,   112.,  164.,  228.,  87.,   120.,  176.,  244.,
      93.,   128.,  175.,  208.,  225.,  260.,  464.,  536.,  243.,  280.,
      500.,  576.,  261.,  300.,  536.,  616.,  279.,  320.,  358.,  432.,
      474.,  552.,  976.,  1136., 510.,  592.,  1048., 1216., 546.,  632.,
      1120., 1296., 582.,  672.,  231.,  272.,  297.,  340.,  608.,  696.,
      315.,  360.,  644.,  736.,  333.,  380.,  680.,  776.,  351.,  400.,
      470.,  560.,  618.,  712.,  1264., 1456., 654.,  752.,  1336., 1536.,
      690.,  792.,  1408., 1616., 726.,  832.,  287.,  336.,  369.,  420.,
      752.,  856.,  387.,  440.,  788.,  896.,  405.,  460.,  824.,  936.,
      423.,  480.,  49.,   100.,  147.,  200.,  296.,  404.,  153.,  208.,
      308.,  420.,  159.,  216.,  320.,  436.,  165.,  224.,  343.,  400.,
      441.,  500.,  896.,  1016., 459.,  520.,  932.,  1056., 477.,  540.,
      968.,  1096., 495.,  560.,  694.,  816.,  906.,  1032., 1840., 2096.,
      942.,  1072., 1912., 2176., 978.,  1112., 1984., 2256., 1014., 1152.,
      399.,  464.,  513.,  580.,  1040., 1176., 531.,  600.,  1076., 1216.,
      549.,  620.,  1112., 1256., 567.,  640.,  806.,  944.,  1050., 1192.,
      2128., 2416., 1086., 1232., 2200., 2496., 1122., 1272., 2272., 2576.,
      1158., 1312., 455.,  528.,  585.,  660.,  1184., 1336., 603.,  680.,
      1220., 1376., 621.,  700.,  1256., 1416., 639.,  720.};
  const std::array<int, 4> in_shape = {{3, 6, 8, 2}};
  const int multiplier = 1;
  const auto padding = sycldnn::PaddingMode::SAME;
  const DataType max_input_val = 2048.0;
  this->run_input_backprop_test(exp_out, in_shape, multiplier, padding,
                                max_input_val);
}
TYPED_TEST(InputBackpropWindow3Stride2, VALID3x6x8x2x1) {
  using DataType = typename TestFixture::DataType;
  const std::vector<DataType> exp_out = {
      1.,    4.,    3.,    8.,   8.,   20.,  9.,   16.,  20.,   36.,   15.,
      24.,   25.,   36.,   0.,   0.,   7.,   16.,  9.,   20.,   32.,   56.,
      27.,   40.,   68.,   96.,  45.,  60.,  55.,  72.,  0.,    0.,    20.,
      44.,   36.,   64.,   100., 160., 72.,  104., 172., 240.,  108.,  144.,
      140.,  180.,  0.,    0.,   49.,  64.,  63.,  80.,  140.,  176.,  81.,
      100.,  176.,  216.,  99.,  120., 121., 144., 0.,   0.,    91.,   112.,
      105.,  128.,  236.,  284., 135., 160., 296., 348., 165.,  192.,  187.,
      216.,  0.,    0.,    0.,   0.,   0.,   0.,   0.,   0.,    0.,    0.,
      0.,    0.,    0.,    0.,   0.,   0.,   0.,   0.,   13.,   28.,   39.,
      56.,   80.,   116.,  45.,  64.,  92.,  132., 51.,  72.,   85.,   108.,
      0.,    0.,    91.,   112., 117., 140., 248., 296., 135.,  160.,  284.,
      336.,  153.,  180.,  187., 216., 0.,   0.,   188., 236.,  252.,  304.,
      532.,  640.,  288.,  344., 604., 720., 324., 384., 404.,  468.,  0.,
      0.,    133.,  160.,  171., 200., 356., 416., 189., 220.,  392.,  456.,
      207.,  240.,  253.,  288., 0.,   0.,   247., 280., 285.,  320.,  596.,
      668.,  315.,  352.,  656., 732., 345., 384., 391., 432.,  0.,    0.,
      0.,    0.,    0.,    0.,   0.,   0.,   0.,   0.,   0.,    0.,    0.,
      0.,    0.,    0.,    0.,   0.,   25.,  52.,  75.,  104.,  152.,  212.,
      81.,   112.,  164.,  228., 87.,  120., 145., 180., 0.,    0.,    175.,
      208.,  225.,  260.,  464., 536., 243., 280., 500., 576.,  261.,  300.,
      319.,  360.,  0.,    0.,   356., 428., 468., 544., 964.,  1120., 504.,
      584.,  1036., 1200., 540., 624., 668., 756., 0.,   0.,    217.,  256.,
      279.,  320.,  572.,  656., 297., 340., 608., 696., 315.,  360.,  385.,
      432.,  0.,    0.,    403., 448., 465., 512., 956., 1052., 495.,  544.,
      1016., 1116., 525.,  576., 595., 648., 0.,   0.,   0.,    0.,    0.,
      0.,    0.,    0.,    0.,   0.,   0.,   0.,   0.,   0.,    0.,    0.,
      0.,    0.};
  const std::array<int, 4> in_shape = {{3, 6, 8, 2}};
  const int multiplier = 1;
  const auto padding = sycldnn::PaddingMode::VALID;
  const DataType max_input_val = 2048.0;
  this->run_input_backprop_test(exp_out, in_shape, multiplier, padding,
                                max_input_val);
}
TYPED_TEST(InputBackpropWindow3Stride2, SAME3x6x8x2x2) {
  using DataType = typename TestFixture::DataType;
  const std::vector<DataType> exp_out = {
      5.,     25.,    17.,    53.,    46.,    134.,  61.,    113.,   134.,
      254.,   105.,   173.,   222.,   374.,   149.,  233.,   41.,    109.,
      53.,    137.,   214.,   398.,   193.,   293.,  494.,   710.,   333.,
      449.,   774.,   1022.,  473.,   605.,   130.,  330.,   282.,   514.,
      780.,   1276.,  562.,   826.,   1340.,  1900., 842.,   1138.,  1900.,
      2524.,  1122.,  1450.,  473.,   605.,   613.,  761.,   1334.,  1646.,
      753.,   917.,   1614.,  1958.,  893.,   1073., 1894.,  2270.,  1033.,
      1229.,  994.,   1322.,  1402.,  1762.,  3020., 3772.,  1682.,  2074.,
      3580.,  4396.,  1962.,  2386.,  4140.,  5020., 2242.,  2698.,  905.,
      1101.,  1173.,  1385.,  2454.,  2894.,  1313., 1541.,  2734.,  3206.,
      1453.,  1697.,  3014.,  3518.,  1593.,  1853., 149.,   361.,   545.,
      773.,   1102.,  1574.,  589.,   833.,   1190., 1694.,  633.,   893.,
      1278.,  1814.,  677.,   953.,   1337.,  1597., 1733.,  2009.,  3574.,
      4142.,  1873.,  2165.,  3854.,  4454.,  2013., 2321.,  4134.,  4766.,
      2153.,  2477.,  2722.,  3306.,  3642.,  4258., 7500.,  8764.,  3922.,
      4570.,  8060.,  9388.,  4202.,  4882.,  8620., 10012., 4482.,  5194.,
      1769.,  2093.,  2293.,  2633.,  4694.,  5390., 2433.,  2789.,  4974.,
      5702.,  2573.,  2945.,  5254.,  6014.,  2713., 3101.,  3586.,  4298.,
      4762.,  5506.,  9740.,  11260., 5042.,  5818., 10300., 11884., 5322.,
      6130.,  10860., 12508., 5602.,  6442.,  2201., 2589.,  2853.,  3257.,
      5814.,  6638.,  2993.,  3413.,  6094.,  6950., 3133.,  3569.,  6374.,
      7262.,  3273.,  3725.,  293.,   697.,   1073., 1493.,  2158.,  3014.,
      1117.,  1553.,  2246.,  3134.,  1161.,  1613., 2334.,  3254.,  1205.,
      1673.,  2633.,  3085.,  3413.,  3881.,  6934., 7886.,  3553.,  4037.,
      7214.,  8198.,  3693.,  4193.,  7494.,  8510., 3833.,  4349.,  5314.,
      6282.,  7002.,  8002.,  14220., 16252., 7282., 8314.,  14780., 16876.,
      7562.,  8626.,  15340., 17500., 7842.,  8938., 3065.,  3581.,  3973.,
      4505.,  8054.,  9134.,  4113.,  4661.,  8334., 9446.,  4253.,  4817.,
      8614.,  9758.,  4393.,  4973.,  6178.,  7274., 8122.,  9250.,  16460.,
      18748., 8402.,  9562.,  17020., 19372., 8682., 9874.,  17580., 19996.,
      8962.,  10186., 3497.,  4077.,  4533.,  5129., 9174.,  10382., 4673.,
      5285.,  9454.,  10694., 4813.,  5441.,  9734., 11006., 4953.,  5597.};
  const std::array<int, 4> in_shape = {{3, 6, 8, 2}};
  const int multiplier = 2;
  const auto padding = sycldnn::PaddingMode::SAME;
  const DataType max_input_val = 2048.0;
  this->run_input_backprop_test(exp_out, in_shape, multiplier, padding,
                                max_input_val);
}
TYPED_TEST(InputBackpropWindow3Stride2, VALID3x6x8x2x2) {
  using DataType = typename TestFixture::DataType;
  const std::vector<DataType> exp_out = {
      5.,    25.,   17.,   53.,   46.,   134.,  61.,   113.,  134.,  254.,
      105.,  173.,  181.,  265.,  0.,    0.,    41.,   109.,  53.,   137.,
      214.,  398.,  193.,  293.,  494.,  710.,  333.,  449.,  409.,  541.,
      0.,    0.,    118.,  302.,  238.,  454.,  692.,  1156., 518.,  766.,
      1252., 1780., 798.,  1078., 1046., 1358., 0.,    0.,    365.,  481.,
      473.,  605.,  1054., 1334., 613.,  761.,  1334., 1646., 753.,  917.,
      925.,  1105., 0.,    0.,    689.,  853.,  797.,  977.,  1798., 2174.,
      1033., 1229., 2270., 2678., 1269., 1481., 1441., 1669., 0.,    0.,
      0.,    0.,    0.,    0.,    0.,    0.,    0.,    0.,    0.,    0.,
      0.,    0.,    0.,    0.,    0.,    0.,    77.,   193.,  281.,  413.,
      574.,  854.,  325.,  473.,  662.,  974.,  369.,  533.,  637.,  817.,
      0.,    0.,    689.,  853.,  893.,  1073., 1894., 2270., 1033., 1229.,
      2174., 2582., 1173., 1385., 1441., 1669., 0.,    0.,    1414., 1790.,
      1918., 2326., 4052., 4900., 2198., 2638., 4612., 5524., 2478., 2950.,
      3110., 3614., 0.,    0.,    1013., 1225., 1313., 1541., 2734., 3206.,
      1453., 1697., 3014., 3518., 1593., 1853., 1957., 2233., 0.,    0.,
      1913., 2173., 2213., 2489., 4630., 5198., 2449., 2741., 5102., 5702.,
      2685., 2993., 3049., 3373., 0.,    0.,    0.,    0.,    0.,    0.,
      0.,    0.,    0.,    0.,    0.,    0.,    0.,    0.,    0.,    0.,
      0.,    0.,    149.,  361.,  545.,  773.,  1102., 1574., 589.,  833.,
      1190., 1694., 633.,  893.,  1093., 1369., 0.,    0.,    1337., 1597.,
      1733., 2009., 3574., 4142., 1873., 2165., 3854., 4454., 2013., 2321.,
      2473., 2797., 0.,    0.,    2710., 3278., 3598., 4198., 7412., 8644.,
      3878., 4510., 7972., 9268., 4158., 4822., 5174., 5870., 0.,    0.,
      1661., 1969., 2153., 2477., 4414., 5078., 2293., 2633., 4694., 5390.,
      2433., 2789., 2989., 3361., 0.,    0.,    3137., 3493., 3629., 4001.,
      7462., 8222., 3865., 4253., 7934., 8726., 4101., 4505., 4657., 5077.,
      0.,    0.,    0.,    0.,    0.,    0.,    0.,    0.,    0.,    0.,
      0.,    0.,    0.,    0.,    0.,    0.,    0.,    0.};
  const std::array<int, 4> in_shape = {{3, 6, 8, 2}};
  const int multiplier = 2;
  const auto padding = sycldnn::PaddingMode::VALID;
  const DataType max_input_val = 2048.0;
  this->run_input_backprop_test(exp_out, in_shape, multiplier, padding,
                                max_input_val);
}
TYPED_TEST(InputBackpropWindow3Stride2, SAME3x6x8x2x4) {
  using DataType = typename TestFixture::DataType;
  const std::vector<DataType> exp_out = {
      30.,     174.,    110.,   382.,   300.,    972.,    446.,   846.,
      972.,    1900.,   782.,   1310.,  1644.,   2828.,   1118.,  1774.,
      270.,    798.,    350.,   1006.,  1548.,   2988.,   1454.,  2238.,
      3756.,   5452.,   2558.,  3470.,  5964.,   7916.,   3662.,  4702.,
      860.,    2428.,   2044.,  3868.,  5784.,   9688.,   4252.,  6332.,
      10200.,  14616.,  6460.,  8796.,  14616.,  19544.,  8668.,  11260.,
      3662.,   4702.,   4766.,  5934.,  10380.,  12844.,  5870.,  7166.,
      12588.,  15308.,  6974.,  8398.,  14796.,  17772.,  8078.,  9630.,
      7644.,   10236.,  10876., 13724., 23448.,  29400.,  13084., 16188.,
      27864.,  34328.,  15292., 18652., 32280.,  39256.,  17500., 21116.,
      7054.,   8606.,   9182.,  10862., 19212.,  22700.,  10286., 12094.,
      21420.,  25164.,  11390., 13326., 23628.,  27628.,  12494., 14558.,
      990.,    2670.,   4142.,  5950.,  8364.,   12108.,  4478.,  6414.,
      9036.,   13036.,  4814.,  6878.,  9708.,   13964.,  5150.,  7342.,
      10446.,  12510.,  13598., 15790., 28044.,  32556.,  14702., 17022.,
      30252.,  35020.,  15806., 18254., 32460.,  37484.,  16910., 19486.,
      21212.,  25852.,  28540., 33436., 58776.,  68824.,  30748., 35900.,
      63192.,  73752.,  32956., 38364., 67608.,  78680.,  35164., 40828.,
      13838.,  16414.,  18014., 20718., 36876.,  42412.,  19118., 21950.,
      39084.,  44876.,  20222., 23182., 41292.,  47340.,  21326., 24414.,
      27996.,  33660.,  37372., 43292., 76440.,  88536.,  39580., 45756.,
      80856.,  93464.,  41788., 48220., 85272.,  98392.,  43996., 50684.,
      17230.,  20318.,  22430., 25646., 45708.,  52268.,  23534., 26878.,
      47916.,  54732.,  24638., 28110., 50124.,  57196.,  25742., 29342.,
      1950.,   5166.,   8174.,  11518., 16428.,  23244.,  8510.,  11982.,
      17100.,  24172.,  8846.,  12446., 17772.,  25100.,  9182.,  12910.,
      20622.,  24222.,  26846., 30574., 54540.,  62124.,  27950., 31806.,
      56748.,  64588.,  29054., 33038., 58956.,  67052.,  30158., 34270.,
      41564.,  49276.,  55036., 63004., 111768., 127960., 57244., 65468.,
      116184., 132888., 59452., 67932., 120600., 137816., 61660., 70396.,
      24014.,  28126.,  31262., 35502., 63372.,  71980.,  32366., 36734.,
      65580.,  74444.,  33470., 37966., 67788.,  76908.,  34574., 39198.,
      48348.,  57084.,  63868., 72860., 129432., 147672., 66076., 75324.,
      133848., 152600., 68284., 77788., 138264., 157528., 70492., 80252.,
      27406.,  32030.,  35678., 40430., 72204.,  81836.,  36782., 41662.,
      74412.,  84300.,  37886., 42894., 76620.,  86764.,  38990., 44126.};
  const std::array<int, 4> in_shape = {{3, 6, 8, 2}};
  const int multiplier = 4;
  const auto padding = sycldnn::PaddingMode::SAME;
  const DataType max_input_val = 2048.0;
  this->run_input_backprop_test(exp_out, in_shape, multiplier, padding,
                                max_input_val);
}
TYPED_TEST(InputBackpropWindow3Stride2, VALID3x6x8x2x4) {
  using DataType = typename TestFixture::DataType;
  const std::vector<DataType> exp_out = {
      30.,    174.,   110.,   382.,   300.,   972.,   446.,   846.,   972.,
      1900.,  782.,   1310.,  1374.,  2030.,  0.,     0.,     270.,   798.,
      350.,   1006.,  1548.,  2988.,  1454.,  2238.,  3756.,  5452.,  2558.,
      3470.,  3150.,  4190.,  0.,     0.,     780.,   2220.,  1708.,  3404.,
      5112.,  8760.,  3916.,  5868.,  9528.,  13688., 6124.,  8332.,  8076.,
      10540., 0.,     0.,     2814.,  3726.,  3662.,  4702.,  8172.,  10380.,
      4766.,  5934.,  10380., 12844., 5870.,  7166.,  7230.,  8654.,  0.,
      0.,     5358.,  6654.,  6206.,  7630.,  14028., 17004., 8078.,  9630.,
      17772., 21004., 9950.,  11630., 11310., 13118., 0.,     0.,     0.,
      0.,     0.,     0.,     0.,     0.,     0.,     0.,     0.,     0.,
      0.,     0.,     0.,     0.,     0.,     0.,     510.,   1422.,  2126.,
      3166.,  4332.,  6540.,  2462.,  3630.,  5004.,  7468.,  2798.,  4094.,
      4926.,  6350.,  0.,     0.,     5358.,  6654.,  6974.,  8398.,  14796.,
      17772., 8078.,  9630.,  17004., 20236., 9182.,  10862., 11310., 13118.,
      0.,     0.,     10956., 13932., 14956., 18188., 31608., 38328., 17164.,
      20652., 36024., 43256., 19372., 23116., 24396., 28396., 0.,     0.,
      7902.,  9582.,  10286., 12094., 21420., 25164., 11390., 13326., 23628.,
      27628., 12494., 14558., 15390., 17582., 0.,     0.,     15054., 17118.,
      17438., 19630., 36492., 41004., 19310., 21630., 40236., 45004., 21182.,
      23630., 24078., 26654., 0.,     0.,     0.,     0.,     0.,     0.,
      0.,     0.,     0.,     0.,     0.,     0.,     0.,     0.,     0.,
      0.,     0.,     0.,     990.,   2670.,  4142.,  5950.,  8364.,  12108.,
      4478.,  6414.,  9036.,  13036., 4814.,  6878.,  8478.,  10670., 0.,
      0.,     10446., 12510., 13598., 15790., 28044., 32556., 14702., 17022.,
      30252., 35020., 15806., 18254., 19470., 22046., 0.,     0.,     21132.,
      25644., 28204., 32972., 58104., 67896., 30412., 35436., 62520., 72824.,
      32620., 37900., 40716., 46252., 0.,     0.,     12990., 15438., 16910.,
      19486., 34668., 39948., 18014., 20718., 36876., 42412., 19118., 21950.,
      23550., 26510., 0.,     0.,     24750., 27582., 28670., 31630., 58956.,
      65004., 30542., 33630., 62700., 69004., 32414., 35630., 36846., 40190.,
      0.,     0.,     0.,     0.,     0.,     0.,     0.,     0.,     0.,
      0.,     0.,     0.,     0.,     0.,     0.,     0.,     0.,     0.};
  const std::array<int, 4> in_shape = {{3, 6, 8, 2}};
  const int multiplier = 4;
  const auto padding = sycldnn::PaddingMode::VALID;
  const DataType max_input_val = 2048.0;
  this->run_input_backprop_test(exp_out, in_shape, multiplier, padding,
                                max_input_val);
}
TYPED_TEST(InputBackpropWindow3Stride2, SAME3x6x8x4x1) {
  using DataType = typename TestFixture::DataType;
  const std::vector<DataType> exp_out = {
      1.,    4.,    9.,    16.,   5.,    12.,   21.,   32.,   14.,   32.,
      54.,   80.,   25.,   36.,   49.,   64.,   54.,   80.,   110.,  144.,
      45.,   60.,   77.,   96.,   94.,   128.,  166.,  208.,  65.,   84.,
      105.,  128.,  13.,   28.,   45.,   64.,   17.,   36.,   57.,   80.,
      86.,   128.,  174.,  224.,  85.,   108.,  133.,  160.,  222.,  272.,
      326.,  384.,  153.,  180.,  209.,  240.,  358.,  416.,  478.,  544.,
      221.,  252.,  285.,  320.,  42.,   88.,   138.,  192.,  114.,  168.,
      226.,  288.,  332.,  448.,  572.,  704.,  250.,  312.,  378.,  448.,
      604.,  736.,  876.,  1024., 386.,  456.,  530.,  608.,  876.,  1024.,
      1180., 1344., 522.,  600.,  682.,  768.,  221.,  252.,  285.,  320.,
      289.,  324.,  361.,  400.,  630.,  704.,  782.,  864.,  357.,  396.,
      437.,  480.,  766.,  848.,  934.,  1024., 425.,  468.,  513.,  560.,
      902.,  992.,  1086., 1184., 493.,  540.,  589.,  640.,  458.,  536.,
      618.,  704.,  658.,  744.,  834.,  928.,  1420., 1600., 1788., 1984.,
      794.,  888.,  986.,  1088., 1692., 1888., 2092., 2304., 930.,  1032.,
      1138., 1248., 1964., 2176., 2396., 2624., 1066., 1176., 1290., 1408.,
      429.,  476.,  525.,  576.,  561.,  612.,  665.,  720.,  1174., 1280.,
      1390., 1504., 629.,  684.,  741.,  800.,  1310., 1424., 1542., 1664.,
      697.,  756.,  817.,  880.,  1446., 1568., 1694., 1824., 765.,  828.,
      893.,  960.,  49.,   100.,  153.,  208.,  245.,  300.,  357.,  416.,
      494.,  608.,  726.,  848.,  265.,  324.,  385.,  448.,  534.,  656.,
      782.,  912.,  285.,  348.,  413.,  480.,  574.,  704.,  838.,  976.,
      305.,  372.,  441.,  512.,  637.,  700.,  765.,  832.,  833.,  900.,
      969.,  1040., 1718., 1856., 1998., 2144., 901.,  972.,  1045., 1120.,
      1854., 2000., 2150., 2304., 969.,  1044., 1121., 1200., 1990., 2144.,
      2302., 2464., 1037., 1116., 1197., 1280., 1290., 1432., 1578., 1728.,
      1746., 1896., 2050., 2208., 3596., 3904., 4220., 4544., 1882., 2040.,
      2202., 2368., 3868., 4192., 4524., 4864., 2018., 2184., 2354., 2528.,
      4140., 4480., 4828., 5184., 2154., 2328., 2506., 2688., 845.,  924.,
      1005., 1088., 1105., 1188., 1273., 1360., 2262., 2432., 2606., 2784.,
      1173., 1260., 1349., 1440., 2398., 2576., 2758., 2944., 1241., 1332.,
      1425., 1520., 2534., 2720., 2910., 3104., 1309., 1404., 1501., 1600.,
      1706., 1880., 2058., 2240., 2290., 2472., 2658., 2848., 4684., 5056.,
      5436., 5824., 2426., 2616., 2810., 3008., 4956., 5344., 5740., 6144.,
      2562., 2760., 2962., 3168., 5228., 5632., 6044., 6464., 2698., 2904.,
      3114., 3328., 1053., 1148., 1245., 1344., 1377., 1476., 1577., 1680.,
      2806., 3008., 3214., 3424., 1445., 1548., 1653., 1760., 2942., 3152.,
      3366., 3584., 1513., 1620., 1729., 1840., 3078., 3296., 3518., 3744.,
      1581., 1692., 1805., 1920., 97.,   196.,  297.,  400.,  485.,  588.,
      693.,  800.,  974.,  1184., 1398., 1616., 505.,  612.,  721.,  832.,
      1014., 1232., 1454., 1680., 525.,  636.,  749.,  864.,  1054., 1280.,
      1510., 1744., 545.,  660.,  777.,  896.,  1261., 1372., 1485., 1600.,
      1649., 1764., 1881., 2000., 3350., 3584., 3822., 4064., 1717., 1836.,
      1957., 2080., 3486., 3728., 3974., 4224., 1785., 1908., 2033., 2160.,
      3622., 3872., 4126., 4384., 1853., 1980., 2109., 2240., 2538., 2776.,
      3018., 3264., 3378., 3624., 3874., 4128., 6860., 7360., 7868., 8384.,
      3514., 3768., 4026., 4288., 7132., 7648., 8172., 8704., 3650., 3912.,
      4178., 4448., 7404., 7936., 8476., 9024., 3786., 4056., 4330., 4608.,
      1469., 1596., 1725., 1856., 1921., 2052., 2185., 2320., 3894., 4160.,
      4430., 4704., 1989., 2124., 2261., 2400., 4030., 4304., 4582., 4864.,
      2057., 2196., 2337., 2480., 4166., 4448., 4734., 5024., 2125., 2268.,
      2413., 2560., 2954., 3224., 3498., 3776., 3922., 4200., 4482., 4768.,
      7948., 8512., 9084., 9664., 4058., 4344., 4634., 4928., 8220., 8800.,
      9388., 9984., 4194., 4488., 4786., 5088., 8492., 9088., 9692., 10304.,
      4330., 4632., 4938., 5248., 1677., 1820., 1965., 2112., 2193., 2340.,
      2489., 2640., 4438., 4736., 5038., 5344., 2261., 2412., 2565., 2720.,
      4574., 4880., 5190., 5504., 2329., 2484., 2641., 2800., 4710., 5024.,
      5342., 5664., 2397., 2556., 2717., 2880.};
  const std::array<int, 4> in_shape = {{3, 6, 8, 4}};
  const int multiplier = 1;
  const auto padding = sycldnn::PaddingMode::SAME;
  const DataType max_input_val = 2048.0;
  this->run_input_backprop_test(exp_out, in_shape, multiplier, padding,
                                max_input_val);
}
TYPED_TEST(InputBackpropWindow3Stride2, VALID3x6x8x4x1) {
  using DataType = typename TestFixture::DataType;
  const std::vector<DataType> exp_out = {
      1.,    4.,    9.,    16.,   5.,    12.,   21.,   32.,   14.,   32.,
      54.,   80.,   25.,   36.,   49.,   64.,   54.,   80.,   110.,  144.,
      45.,   60.,   77.,   96.,   81.,   100.,  121.,  144.,  0.,    0.,
      0.,    0.,    13.,   28.,   45.,   64.,   17.,   36.,   57.,   80.,
      86.,   128.,  174.,  224.,  85.,   108.,  133.,  160.,  222.,  272.,
      326.,  384.,  153.,  180.,  209.,  240.,  189.,  220.,  253.,  288.,
      0.,    0.,    0.,    0.,    38.,   80.,   126.,  176.,  94.,   144.,
      198.,  256.,  292.,  400.,  516.,  640.,  230.,  288.,  350.,  416.,
      564.,  688.,  820.,  960.,  366.,  432.,  502.,  576.,  486.,  560.,
      638.,  720.,  0.,    0.,    0.,    0.,    169.,  196.,  225.,  256.,
      221.,  252.,  285.,  320.,  494.,  560.,  630.,  704.,  289.,  324.,
      361.,  400.,  630.,  704.,  782.,  864.,  357.,  396.,  437.,  480.,
      441.,  484.,  529.,  576.,  0.,    0.,    0.,    0.,    325.,  364.,
      405.,  448.,  377.,  420.,  465.,  512.,  854.,  944.,  1038., 1136.,
      493.,  540.,  589.,  640.,  1086., 1184., 1286., 1392., 609.,  660.,
      713.,  768.,  693.,  748.,  805.,  864.,  0.,    0.,    0.,    0.,
      0.,    0.,    0.,    0.,    0.,    0.,    0.,    0.,    0.,    0.,
      0.,    0.,    0.,    0.,    0.,    0.,    0.,    0.,    0.,    0.,
      0.,    0.,    0.,    0.,    0.,    0.,    0.,    0.,    0.,    0.,
      0.,    0.,    25.,   52.,   81.,   112.,  125.,  156.,  189.,  224.,
      254.,  320.,  390.,  464.,  145.,  180.,  217.,  256.,  294.,  368.,
      446.,  528.,  165.,  204.,  245.,  288.,  297.,  340.,  385.,  432.,
      0.,    0.,    0.,    0.,    325.,  364.,  405.,  448.,  425.,  468.,
      513.,  560.,  902.,  992.,  1086., 1184., 493.,  540.,  589.,  640.,
      1038., 1136., 1238., 1344., 561.,  612.,  665.,  720.,  693.,  748.,
      805.,  864.,  0.,    0.,    0.,    0.,    662.,  752.,  846.,  944.,
      910.,  1008., 1110., 1216., 1924., 2128., 2340., 2560., 1046., 1152.,
      1262., 1376., 2196., 2416., 2644., 2880., 1182., 1296., 1414., 1536.,
      1494., 1616., 1742., 1872., 0.,    0.,    0.,    0.,    481.,  532.,
      585.,  640.,  629.,  684.,  741.,  800.,  1310., 1424., 1542., 1664.,
      697.,  756.,  817.,  880.,  1446., 1568., 1694., 1824., 765.,  828.,
      893.,  960.,  945.,  1012., 1081., 1152., 0.,    0.,    0.,    0.,
      925.,  988.,  1053., 1120., 1073., 1140., 1209., 1280., 2246., 2384.,
      2526., 2672., 1189., 1260., 1333., 1408., 2478., 2624., 2774., 2928.,
      1305., 1380., 1457., 1536., 1485., 1564., 1645., 1728., 0.,    0.,
      0.,    0.,    0.,    0.,    0.,    0.,    0.,    0.,    0.,    0.,
      0.,    0.,    0.,    0.,    0.,    0.,    0.,    0.,    0.,    0.,
      0.,    0.,    0.,    0.,    0.,    0.,    0.,    0.,    0.,    0.,
      0.,    0.,    0.,    0.,    49.,   100.,  153.,  208.,  245.,  300.,
      357.,  416.,  494.,  608.,  726.,  848.,  265.,  324.,  385.,  448.,
      534.,  656.,  782.,  912.,  285.,  348.,  413.,  480.,  513.,  580.,
      649.,  720.,  0.,    0.,    0.,    0.,    637.,  700.,  765.,  832.,
      833.,  900.,  969.,  1040., 1718., 1856., 1998., 2144., 901.,  972.,
      1045., 1120., 1854., 2000., 2150., 2304., 969.,  1044., 1121., 1200.,
      1197., 1276., 1357., 1440., 0.,    0.,    0.,    0.,    1286., 1424.,
      1566., 1712., 1726., 1872., 2022., 2176., 3556., 3856., 4164., 4480.,
      1862., 2016., 2174., 2336., 3828., 4144., 4468., 4800., 1998., 2160.,
      2326., 2496., 2502., 2672., 2846., 3024., 0.,    0.,    0.,    0.,
      793.,  868.,  945.,  1024., 1037., 1116., 1197., 1280., 2126., 2288.,
      2454., 2624., 1105., 1188., 1273., 1360., 2262., 2432., 2606., 2784.,
      1173., 1260., 1349., 1440., 1449., 1540., 1633., 1728., 0.,    0.,
      0.,    0.,    1525., 1612., 1701., 1792., 1769., 1860., 1953., 2048.,
      3638., 3824., 4014., 4208., 1885., 1980., 2077., 2176., 3870., 4064.,
      4262., 4464., 2001., 2100., 2201., 2304., 2277., 2380., 2485., 2592.,
      0.,    0.,    0.,    0.,    0.,    0.,    0.,    0.,    0.,    0.,
      0.,    0.,    0.,    0.,    0.,    0.,    0.,    0.,    0.,    0.,
      0.,    0.,    0.,    0.,    0.,    0.,    0.,    0.,    0.,    0.,
      0.,    0.,    0.,    0.,    0.,    0.};
  const std::array<int, 4> in_shape = {{3, 6, 8, 4}};
  const int multiplier = 1;
  const auto padding = sycldnn::PaddingMode::VALID;
  const DataType max_input_val = 2048.0;
  this->run_input_backprop_test(exp_out, in_shape, multiplier, padding,
                                max_input_val);
}
TYPED_TEST(InputBackpropWindow3Stride2, SAME3x6x8x4x2) {
  using DataType = typename TestFixture::DataType;
  const std::vector<DataType> exp_out = {
      5.,     25.,    61.,    113.,   29.,    81.,    149.,   233.,   82.,
      218.,   386.,   586.,   181.,   265.,   365.,   481.,   386.,   586.,
      818.,   1082.,  333.,   449.,   581.,   729.,   690.,   954.,   1250.,
      1578.,  485.,   633.,   797.,   977.,   77.,    193.,   325.,   473.,
      101.,   249.,   413.,   593.,   610.,   938.,   1298.,  1690.,  637.,
      817.,   1013.,  1225.,  1682.,  2074.,  2498.,  2954.,  1173.,  1385.,
      1613.,  1857.,  2754.,  3210.,  3698.,  4218.,  1709.,  1953.,  2213.,
      2489.,  250.,   610.,   1002.,  1426.,  810.,   1234.,  1690.,  2178.,
      2436.,  3348.,  4324.,  5364.,  1882.,  2370.,  2890.,  3442.,  4580.,
      5620.,  6724.,  7892.,  2954.,  3506.,  4090.,  4706.,  6724.,  7892.,
      9124.,  10420., 4026.,  4642.,  5290.,  5970.,  1709.,  1953.,  2213.,
      2489.,  2245.,  2521.,  2813.,  3121.,  4898.,  5482.,  6098.,  6746.,
      2781.,  3089.,  3413.,  3753.,  5970.,  6618.,  7298.,  8010.,  3317.,
      3657.,  4013.,  4385.,  7042.,  7754.,  8498.,  9274.,  3853.,  4225.,
      4613.,  5017.,  3514.,  4130.,  4778.,  5458.,  5098.,  5778.,  6490.,
      7234.,  11012., 12436., 13924., 15476., 6170.,  6914.,  7690.,  8498.,
      13156., 14708., 16324., 18004., 7242.,  8050.,  8890.,  9762.,  15300.,
      16980., 18724., 20532., 8314.,  9186.,  10090., 11026., 3341.,  3713.,
      4101.,  4505.,  4389.,  4793.,  5213.,  5649.,  9186.,  10026., 10898.,
      11802., 4925.,  5361.,  5813.,  6281.,  10258., 11162., 12098., 13066.,
      5461.,  5929.,  6413.,  6913.,  11330., 12298., 13298., 14330., 5997.,
      6497.,  7013.,  7545.,  293.,   697.,   1117.,  1553.,  1853.,  2289.,
      2741.,  3209.,  3730.,  4634.,  5570.,  6538.,  2005.,  2473.,  2957.,
      3457.,  4034.,  5002.,  6002.,  7034.,  2157.,  2657.,  3173.,  3705.,
      4338.,  5370.,  6434.,  7530.,  2309.,  2841.,  3389.,  3953.,  4973.,
      5473.,  5989.,  6521.,  6533.,  7065.,  7613.,  8177.,  13474., 14570.,
      15698., 16858., 7069.,  7633.,  8213.,  8809.,  14546., 15706., 16898.,
      18122., 7605.,  8201.,  8813.,  9441.,  15618., 16842., 18098., 19386.,
      8141.,  8769.,  9413.,  10073., 10042., 11170., 12330., 13522., 13674.,
      14866., 16090., 17346., 28164., 30612., 33124., 35700., 14746., 16002.,
      17290., 18610., 30308., 32884., 35524., 38228., 15818., 17138., 18490.,
      19874., 32452., 35156., 37924., 40756., 16890., 18274., 19690., 21138.,
      6605.,  7233.,  7877.,  8537.,  8677.,  9337.,  10013., 10705., 17762.,
      19114., 20498., 21914., 9213.,  9905.,  10613., 11337., 18834., 20250.,
      21698., 23178., 9749.,  10473., 11213., 11969., 19906., 21386., 22898.,
      24442., 10285., 11041., 11813., 12601., 13306., 14690., 16106., 17554.,
      17962., 19410., 20890., 22402., 36740., 39700., 42724., 45812., 19034.,
      20546., 22090., 23666., 38884., 41972., 45124., 48340., 20106., 21682.,
      23290., 24930., 41028., 44244., 47524., 50868., 21178., 22818., 24490.,
      26194., 8237.,  8993.,  9765.,  10553., 10821., 11609., 12413., 13233.,
      22050., 23658., 25298., 26970., 11357., 12177., 13013., 13865., 23122.,
      24794., 26498., 28234., 11893., 12745., 13613., 14497., 24194., 25930.,
      27698., 29498., 12429., 13313., 14213., 15129., 581.,   1369.,  2173.,
      2993.,  3677.,  4497.,  5333.,  6185.,  7378.,  9050.,  10754., 12490.,
      3829.,  4681.,  5549.,  6433.,  7682.,  9418.,  11186., 12986., 3981.,
      4865.,  5765.,  6681.,  7986.,  9786.,  11618., 13482., 4133.,  5049.,
      5981.,  6929.,  9869.,  10753., 11653., 12569., 12965., 13881., 14813.,
      15761., 26338., 28202., 30098., 32026., 13501., 14449., 15413., 16393.,
      27410., 29338., 31298., 33290., 14037., 15017., 16013., 17025., 28482.,
      30474., 32498., 34554., 14573., 15585., 16613., 17657., 19834., 21730.,
      23658., 25618., 26538., 28498., 30490., 32514., 53892., 57876., 61924.,
      66036., 27610., 29634., 31690., 33778., 56036., 60148., 64324., 68564.,
      28682., 30770., 32890., 35042., 58180., 62420., 66724., 71092., 29754.,
      31906., 34090., 36306., 11501., 12513., 13541., 14585., 15109., 16153.,
      17213., 18289., 30626., 32746., 34898., 37082., 15645., 16721., 17813.,
      18921., 31698., 33882., 36098., 38346., 16181., 17289., 18413., 19553.,
      32770., 35018., 37298., 39610., 16717., 17857., 19013., 20185., 23098.,
      25250., 27434., 29650., 30826., 33042., 35290., 37570., 62468., 66964.,
      71524., 76148., 31898., 34178., 36490., 38834., 64612., 69236., 73924.,
      78676., 32970., 35314., 37690., 40098., 66756., 71508., 76324., 81204.,
      34042., 36450., 38890., 41362., 13133., 14273., 15429., 16601., 17253.,
      18425., 19613., 20817., 34914., 37290., 39698., 42138., 17789., 18993.,
      20213., 21449., 35986., 38426., 40898., 43402., 18325., 19561., 20813.,
      22081., 37058., 39562., 42098., 44666., 18861., 20129., 21413., 22713.};
  const std::array<int, 4> in_shape = {{3, 6, 8, 4}};
  const int multiplier = 2;
  const auto padding = sycldnn::PaddingMode::SAME;
  const DataType max_input_val = 2048.0;
  this->run_input_backprop_test(exp_out, in_shape, multiplier, padding,
                                max_input_val);
}
TYPED_TEST(InputBackpropWindow3Stride2, VALID3x6x8x4x2) {
  using DataType = typename TestFixture::DataType;
  const std::vector<DataType> exp_out = {
      5.,     25.,    61.,    113.,   29.,    81.,    149.,   233.,   82.,
      218.,   386.,   586.,   181.,   265.,   365.,   481.,   386.,   586.,
      818.,   1082.,  333.,   449.,   581.,   729.,   613.,   761.,   925.,
      1105.,  0.,     0.,     0.,     0.,     77.,    193.,   325.,   473.,
      101.,   249.,   413.,   593.,   610.,   938.,   1298.,  1690.,  637.,
      817.,   1013.,  1225.,  1682.,  2074.,  2498.,  2954.,  1173.,  1385.,
      1613.,  1857.,  1453.,  1697.,  1957.,  2233.,  0.,     0.,     0.,
      0.,     226.,   554.,   914.,   1306.,  658.,   1050.,  1474.,  1930.,
      2132.,  2980.,  3892.,  4868.,  1730.,  2186.,  2674.,  3194.,  4276.,
      5252.,  6292.,  7396.,  2802.,  3322.,  3874.,  4458.,  3746.,  4330.,
      4946.,  5594.,  0.,     0.,     0.,     0.,     1301.,  1513.,  1741.,
      1985.,  1709.,  1953.,  2213.,  2489.,  3826.,  4346.,  4898.,  5482.,
      2245.,  2521.,  2813.,  3121.,  4898.,  5482.,  6098.,  6746.,  2781.,
      3089.,  3413.,  3753.,  3445.,  3785.,  4141.,  4513.,  0.,     0.,
      0.,     0.,     2525.,  2833.,  3157.,  3497.,  2933.,  3273.,  3629.,
      4001.,  6658.,  7370.,  8114.,  8890.,  3853.,  4225.,  4613.,  5017.,
      8498.,  9274.,  10082., 10922., 4773.,  5177.,  5597.,  6033.,  5437.,
      5873.,  6325.,  6793.,  0.,     0.,     0.,     0.,     0.,     0.,
      0.,     0.,     0.,     0.,     0.,     0.,     0.,     0.,     0.,
      0.,     0.,     0.,     0.,     0.,     0.,     0.,     0.,     0.,
      0.,     0.,     0.,     0.,     0.,     0.,     0.,     0.,     0.,
      0.,     0.,     0.,     149.,   361.,   589.,   833.,   941.,   1185.,
      1445.,  1721.,  1906.,  2426.,  2978.,  3562.,  1093.,  1369.,  1661.,
      1969.,  2210.,  2794.,  3410.,  4058.,  1245.,  1553.,  1877.,  2217.,
      2293.,  2633.,  2989.,  3361.,  0.,     0.,     0.,     0.,     2525.,
      2833.,  3157.,  3497.,  3317.,  3657.,  4013.,  4385.,  7042.,  7754.,
      8498.,  9274.,  3853.,  4225.,  4613.,  5017.,  8114.,  8890.,  9698.,
      10538., 4389.,  4793.,  5213.,  5649.,  5437.,  5873.,  6325.,  6793.,
      0.,     0.,     0.,     0.,     5122.,  5834.,  6578.,  7354.,  7090.,
      7866.,  8674.,  9514.,  14996., 16612., 18292., 20036., 8162.,  9002.,
      9874.,  10778., 17140., 18884., 20692., 22564., 9234.,  10138., 11074.,
      12042., 11714., 12682., 13682., 14714., 0.,     0.,     0.,     0.,
      3749.,  4153.,  4573.,  5009.,  4925.,  5361.,  5813.,  6281.,  10258.,
      11162., 12098., 13066., 5461.,  5929.,  6413.,  6913.,  11330., 12298.,
      13298., 14330., 5997.,  6497.,  7013.,  7545.,  7429.,  7961.,  8509.,
      9073.,  0.,     0.,     0.,     0.,     7277.,  7777.,  8293.,  8825.,
      8453.,  8985.,  9533.,  10097., 17698., 18794., 19922., 21082., 9373.,
      9937.,  10517., 11113., 19538., 20698., 21890., 23114., 10293., 10889.,
      11501., 12129., 11725., 12353., 12997., 13657., 0.,     0.,     0.,
      0.,     0.,     0.,     0.,     0.,     0.,     0.,     0.,     0.,
      0.,     0.,     0.,     0.,     0.,     0.,     0.,     0.,     0.,
      0.,     0.,     0.,     0.,     0.,     0.,     0.,     0.,     0.,
      0.,     0.,     0.,     0.,     0.,     0.,     293.,   697.,   1117.,
      1553.,  1853.,  2289.,  2741.,  3209.,  3730.,  4634.,  5570.,  6538.,
      2005.,  2473.,  2957.,  3457.,  4034.,  5002.,  6002.,  7034.,  2157.,
      2657.,  3173.,  3705.,  3973.,  4505.,  5053.,  5617.,  0.,     0.,
      0.,     0.,     4973.,  5473.,  5989.,  6521.,  6533.,  7065.,  7613.,
      8177.,  13474., 14570., 15698., 16858., 7069.,  7633.,  8213.,  8809.,
      14546., 15706., 16898., 18122., 7605.,  8201.,  8813.,  9441.,  9421.,
      10049., 10693., 11353., 0.,     0.,     0.,     0.,     10018., 11114.,
      12242., 13402., 13522., 14682., 15874., 17098., 27860., 30244., 32692.,
      35204., 14594., 15818., 17074., 18362., 30004., 32516., 35092., 37732.,
      15666., 16954., 18274., 19626., 19682., 21034., 22418., 23834., 0.,
      0.,     0.,     0.,     6197.,  6793.,  7405.,  8033.,  8141.,  8769.,
      9413.,  10073., 16690., 17978., 19298., 20650., 8677.,  9337.,  10013.,
      10705., 17762., 19114., 20498., 21914., 9213.,  9905.,  10613., 11337.,
      11413., 12137., 12877., 13633., 0.,     0.,     0.,     0.,     12029.,
      12721., 13429., 14153., 13973., 14697., 15437., 16193., 28738., 30218.,
      31730., 33274., 14893., 15649., 16421., 17209., 30578., 32122., 33698.,
      35306., 15813., 16601., 17405., 18225., 18013., 18833., 19669., 20521.,
      0.,     0.,     0.,     0.,     0.,     0.,     0.,     0.,     0.,
      0.,     0.,     0.,     0.,     0.,     0.,     0.,     0.,     0.,
      0.,     0.,     0.,     0.,     0.,     0.,     0.,     0.,     0.,
      0.,     0.,     0.,     0.,     0.,     0.,     0.,     0.,     0.};
  const std::array<int, 4> in_shape = {{3, 6, 8, 4}};
  const int multiplier = 2;
  const auto padding = sycldnn::PaddingMode::VALID;
  const DataType max_input_val = 2048.0;
  this->run_input_backprop_test(exp_out, in_shape, multiplier, padding,
                                max_input_val);
}
TYPED_TEST(InputBackpropWindow3Stride2, SAME3x6x8x4x4) {
  using DataType = typename TestFixture::DataType;
  const std::vector<DataType> exp_out = {
      30.,     174.,    446.,    846.,    190.,    590.,    1118.,   1774.,
      540.,    1596.,   2908.,   4476.,   1374.,   2030.,   2814.,   3726.,
      2908.,   4476.,   6300.,   8380.,   2558.,   3470.,   4510.,   5678.,
      5276.,   7356.,   9692.,   12284.,  3742.,   4910.,   6206.,   7630.,
      510.,    1422.,   2462.,   3630.,   670.,    1838.,   3134.,   4558.,
      4572.,   7164.,   10012.,  13116.,  4926.,   6350.,   7902.,   9582.,
      13084.,  16188.,  19548.,  23164.,  9182.,   10862.,  12670.,  14606.,
      21596.,  25212.,  29084.,  33212.,  13438.,  15374.,  17438.,  19630.,
      1660.,   4508.,   7612.,   10972.,  6076.,   9436.,   13052.,  16924.,
      18616.,  25848.,  33592.,  41848.,  14588.,  18460.,  22588.,  26972.,
      35640.,  43896.,  52664.,  61944.,  23100.,  27484.,  32124.,  37020.,
      52664.,  61944.,  71736.,  82040.,  31612.,  36508.,  41660.,  47068.,
      13438.,  15374.,  17438.,  19630.,  17694.,  19886.,  22206.,  24654.,
      38620.,  43260.,  48156.,  53308.,  21950.,  24398.,  26974.,  29678.,
      47132.,  52284.,  57692.,  63356.,  26206.,  28910.,  31742.,  34702.,
      55644.,  61308.,  67228.,  73404.,  30462.,  33422.,  36510.,  39726.,
      27516.,  32412.,  37564.,  42972.,  40124.,  45532.,  51196.,  57116.,
      86712.,  98040.,  109880., 122232., 48636.,  54556.,  60732.,  67164.,
      103736., 116088., 128952., 142328., 57148.,  63580.,  70268.,  77212.,
      120760., 134136., 148024., 162424., 65660.,  72604.,  79804.,  87260.,
      26366.,  29326.,  32414.,  35630.,  34718.,  37934.,  41278.,  44750.,
      72668.,  79356.,  86300.,  93500.,  38974.,  42446.,  46046.,  49774.,
      81180.,  88380.,  95836.,  103548., 43230.,  46958.,  50814.,  54798.,
      89692.,  97404.,  105372., 113596., 47486.,  51470.,  55582.,  59822.,
      1950.,   5166.,   8510.,   11982.,  14398.,  17870.,  21470.,  25198.,
      28956.,  36156.,  43612.,  51324.,  15582.,  19310.,  23166.,  27150.,
      31324.,  39036.,  47004.,  55228.,  16766.,  20750.,  24862.,  29102.,
      33692.,  41916.,  50396.,  59132.,  17950.,  22190.,  26558.,  31054.,
      39294.,  43278.,  47390.,  51630.,  51742.,  55982.,  60350.,  64846.,
      106716., 115452., 124444., 133692., 55998.,  60494.,  65118.,  69870.,
      115228., 124476., 133980., 143740., 60254.,  65006.,  69886.,  74894.,
      123740., 133500., 143516., 153788., 64510.,  69518.,  74654.,  79918.,
      79228.,  88220.,  97468.,  106972., 108220., 117724., 127484., 137500.,
      222904., 242424., 262456., 283000., 116732., 126748., 137020., 147548.,
      239928., 260472., 281528., 303096., 125244., 135772., 146556., 157596.,
      256952., 278520., 300600., 323192., 133756., 144796., 156092., 167644.,
      52222.,  57230.,  62366.,  67630.,  68766.,  74030.,  79422.,  84942.,
      140764., 151548., 162588., 173884., 73022.,  78542.,  84190.,  89966.,
      149276., 160572., 172124., 183932., 77278.,  83054.,  88958.,  94990.,
      157788., 169596., 181660., 193980., 81534.,  87566.,  93726.,  100014.,
      105084., 116124., 127420., 138972., 142268., 153820., 165628., 177692.,
      291000., 314616., 338744., 363384., 150780., 162844., 175164., 187740.,
      308024., 332664., 357816., 383480., 159292., 171868., 184700., 197788.,
      325048., 350712., 376888., 403576., 167804., 180892., 194236., 207836.,
      65150.,  71182.,  77342.,  83630.,  85790.,  92078.,  98494.,  105038.,
      174812., 187644., 200732., 214076., 90046.,  96590.,  103262., 110062.,
      183324., 196668., 210268., 224124., 94302.,  101102., 108030., 115086.,
      191836., 205692., 219804., 234172., 98558.,  105614., 112798., 120110.,
      3870.,   10158.,  16574.,  23118.,  28606.,  35150.,  41822.,  48622.,
      57372.,  70716.,  84316.,  98172.,  29790.,  36590.,  43518.,  50574.,
      59740.,  73596.,  87708.,  102076., 30974.,  38030.,  45214.,  52526.,
      62108.,  76476.,  91100.,  105980., 32158.,  39470.,  46910.,  54478.,
      78078.,  85134.,  92318.,  99630.,  102814., 110126., 117566., 125134.,
      208860., 223740., 238876., 254268., 107070., 114638., 122334., 130158.,
      217372., 232764., 248412., 264316., 111326., 119150., 127102., 135182.,
      225884., 241788., 257948., 274364., 115582., 123662., 131870., 140206.,
      156796., 171932., 187324., 202972., 210364., 226012., 241916., 258076.,
      427192., 459000., 491320., 524152., 218876., 235036., 251452., 268124.,
      444216., 477048., 510392., 544248., 227388., 244060., 260988., 278172.,
      461240., 495096., 529464., 564344., 235900., 253084., 270524., 288220.,
      91006.,  99086.,  107294., 115630., 119838., 128174., 136638., 145230.,
      242908., 259836., 277020., 294460., 124094., 132686., 141406., 150254.,
      251420., 268860., 286556., 304508., 128350., 137198., 146174., 155278.,
      259932., 277884., 296092., 314556., 132606., 141710., 150942., 160302.,
      182652., 199836., 217276., 234972., 244412., 262108., 280060., 298268.,
      495288., 531192., 567608., 604536., 252924., 271132., 289596., 308316.,
      512312., 549240., 586680., 624632., 261436., 280156., 299132., 318364.,
      529336., 567288., 605752., 644728., 269948., 289180., 308668., 328412.,
      103934., 113038., 122270., 131630., 136862., 146222., 155710., 165326.,
      276956., 295932., 315164., 334652., 141118., 150734., 160478., 170350.,
      285468., 304956., 324700., 344700., 145374., 155246., 165246., 175374.,
      293980., 313980., 334236., 354748., 149630., 159758., 170014., 180398.};
  const std::array<int, 4> in_shape = {{3, 6, 8, 4}};
  const int multiplier = 4;
  const auto padding = sycldnn::PaddingMode::SAME;
  const DataType max_input_val = 2048.0;
  this->run_input_backprop_test(exp_out, in_shape, multiplier, padding,
                                max_input_val);
}
TYPED_TEST(InputBackpropWindow3Stride2, VALID3x6x8x4x4) {
  using DataType = typename TestFixture::DataType;
  const std::vector<DataType> exp_out = {
      30.,     174.,    446.,    846.,    190.,    590.,    1118.,   1774.,
      540.,    1596.,   2908.,   4476.,   1374.,   2030.,   2814.,   3726.,
      2908.,   4476.,   6300.,   8380.,   2558.,   3470.,   4510.,   5678.,
      4766.,   5934.,   7230.,   8654.,   0.,      0.,      0.,      0.,
      510.,    1422.,   2462.,   3630.,   670.,    1838.,   3134.,   4558.,
      4572.,   7164.,   10012.,  13116.,  4926.,   6350.,   7902.,   9582.,
      13084.,  16188.,  19548.,  23164.,  9182.,   10862.,  12670.,  14606.,
      11390.,  13326.,  15390.,  17582.,  0.,      0.,      0.,      0.,
      1500.,   4092.,   6940.,   10044.,  4892.,   7996.,   11356.,  14972.,
      16248.,  22968.,  30200.,  37944.,  13404.,  17020.,  20892.,  25020.,
      33272.,  41016.,  49272.,  58040.,  21916.,  26044.,  30428.,  35068.,
      29404.,  34044.,  38940.,  44092.,  0.,      0.,      0.,      0.,
      10206.,  11886.,  13694.,  15630.,  13438.,  15374.,  17438.,  19630.,
      30108.,  34236.,  38620.,  43260.,  17694.,  19886.,  22206.,  24654.,
      38620.,  43260.,  48156.,  53308.,  21950.,  24398.,  26974.,  29678.,
      27230.,  29934.,  32766.,  35726.,  0.,      0.,      0.,      0.,
      19902.,  22350.,  24926.,  27630.,  23134.,  25838.,  28670.,  31630.,
      52572.,  58236.,  64156.,  70332.,  30462.,  33422.,  36510.,  39726.,
      67228.,  73404.,  79836.,  86524.,  37790.,  41006.,  44350.,  47822.,
      43070.,  46542.,  50142.,  53870.,  0.,      0.,      0.,      0.,
      0.,      0.,      0.,      0.,      0.,      0.,      0.,      0.,
      0.,      0.,      0.,      0.,      0.,      0.,      0.,      0.,
      0.,      0.,      0.,      0.,      0.,      0.,      0.,      0.,
      0.,      0.,      0.,      0.,      0.,      0.,      0.,      0.,
      990.,    2670.,   4478.,   6414.,   7294.,   9230.,   11294.,  13486.,
      14748.,  18876.,  23260.,  27900.,  8478.,   10670.,  12990.,  15438.,
      17116.,  21756.,  26652.,  31804.,  9662.,   12110.,  14686.,  17390.,
      18014.,  20718.,  23550.,  26510.,  0.,      0.,      0.,      0.,
      19902.,  22350.,  24926.,  27630.,  26206.,  28910.,  31742.,  34702.,
      55644.,  61308.,  67228.,  73404.,  30462.,  33422.,  36510.,  39726.,
      64156.,  70332.,  76764.,  83452.,  34718.,  37934.,  41278.,  44750.,
      43070.,  46542.,  50142.,  53870.,  0.,      0.,      0.,      0.,
      40284.,  45948.,  51868.,  58044.,  55964.,  62140.,  68572.,  75260.,
      118392., 131256., 144632., 158520., 64476.,  71164.,  78108.,  85308.,
      135416., 149304., 163704., 178616., 72988.,  80188.,  87644.,  95356.,
      92764.,  100476., 108444., 116668., 0.,      0.,      0.,      0.,
      29598.,  32814.,  36158.,  39630.,  38974.,  42446.,  46046.,  49774.,
      81180.,  88380.,  95836.,  103548., 43230.,  46958.,  50814.,  54798.,
      89692.,  97404.,  105372., 113596., 47486.,  51470.,  55582.,  59822.,
      58910.,  63150.,  67518.,  72014.,  0.,      0.,      0.,      0.,
      57726.,  61710.,  65822.,  70062.,  67102.,  71342.,  75710.,  80206.,
      140508., 149244., 158236., 167484., 74430.,  78926.,  83550.,  88302.,
      155164., 164412., 173916., 183676., 81758.,  86510.,  91390.,  96398.,
      93182.,  98190.,  103326., 108590., 0.,      0.,      0.,      0.,
      0.,      0.,      0.,      0.,      0.,      0.,      0.,      0.,
      0.,      0.,      0.,      0.,      0.,      0.,      0.,      0.,
      0.,      0.,      0.,      0.,      0.,      0.,      0.,      0.,
      0.,      0.,      0.,      0.,      0.,      0.,      0.,      0.,
      1950.,   5166.,   8510.,   11982.,  14398.,  17870.,  21470.,  25198.,
      28956.,  36156.,  43612.,  51324.,  15582.,  19310.,  23166.,  27150.,
      31324.,  39036.,  47004.,  55228.,  16766.,  20750.,  24862.,  29102.,
      31262.,  35502.,  39870.,  44366.,  0.,      0.,      0.,      0.,
      39294.,  43278.,  47390.,  51630.,  51742.,  55982.,  60350.,  64846.,
      106716., 115452., 124444., 133692., 55998.,  60494.,  65118.,  69870.,
      115228., 124476., 133980., 143740., 60254.,  65006.,  69886.,  74894.,
      74750.,  79758.,  84894.,  90158.,  0.,      0.,      0.,      0.,
      79068.,  87804.,  96796.,  106044., 107036., 116284., 125788., 135548.,
      220536., 239544., 259064., 279096., 115548., 125308., 135324., 145596.,
      237560., 257592., 278136., 299192., 124060., 134332., 144860., 155644.,
      156124., 166908., 177948., 189244., 0.,      0.,      0.,      0.,
      48990.,  53742.,  58622.,  63630.,  64510.,  69518.,  74654.,  79918.,
      132252., 142524., 153052., 163836., 68766.,  74030.,  79422.,  84942.,
      140764., 151548., 162588., 173884., 73022.,  78542.,  84190.,  89966.,
      90590.,  96366.,  102270., 108302., 0.,      0.,      0.,      0.,
      95550.,  101070., 106718., 112494., 111070., 116846., 122750., 128782.,
      228444., 240252., 252316., 264636., 118398., 124430., 130590., 136878.,
      243100., 255420., 267996., 280828., 125726., 132014., 138430., 144974.,
      143294., 149838., 156510., 163310., 0.,      0.,      0.,      0.,
      0.,      0.,      0.,      0.,      0.,      0.,      0.,      0.,
      0.,      0.,      0.,      0.,      0.,      0.,      0.,      0.,
      0.,      0.,      0.,      0.,      0.,      0.,      0.,      0.,
      0.,      0.,      0.,      0.,      0.,      0.,      0.,      0.};
  const std::array<int, 4> in_shape = {{3, 6, 8, 4}};
  const int multiplier = 4;
  const auto padding = sycldnn::PaddingMode::VALID;
  const DataType max_input_val = 2048.0;
  this->run_input_backprop_test(exp_out, in_shape, multiplier, padding,
                                max_input_val);
}
TYPED_TEST(InputBackpropWindow3Stride2, SAME3x8x5x1x1) {
  using DataType = typename TestFixture::DataType;
  const std::vector<DataType> exp_out = {
      2.,   5.,   4.,   9.,   6.,   5.,   14.,  10.,  24.,  15.,  16.,  40.,
      26.,  60.,  36.,  20.,  44.,  25.,  54.,  30.,  46.,  100., 56.,  120.,
      66.,  35.,  74.,  40.,  84.,  45.,  76.,  160., 86.,  180., 96.,  50.,
      104., 55.,  114., 60.,  26.,  53.,  28.,  57.,  30.,  65.,  134., 70.,
      144., 75.,  136., 280., 146., 300., 156., 80.,  164., 85.,  174., 90.,
      166., 340., 176., 360., 186., 95.,  194., 100., 204., 105., 196., 400.,
      206., 420., 216., 110., 224., 115., 234., 120., 50.,  101., 52.,  105.,
      54.,  125., 254., 130., 264., 135., 256., 520., 266., 540., 276., 140.,
      284., 145., 294., 150., 286., 580., 296., 600., 306., 155., 314., 160.,
      324., 165., 316., 640., 326., 660., 336., 170., 344., 175., 354., 180.};
  const std::array<int, 4> in_shape = {{3, 8, 5, 1}};
  const int multiplier = 1;
  const auto padding = sycldnn::PaddingMode::SAME;
  const DataType max_input_val = 2048.0;
  this->run_input_backprop_test(exp_out, in_shape, multiplier, padding,
                                max_input_val);
}
TYPED_TEST(InputBackpropWindow3Stride2, VALID3x8x5x1x1) {
  using DataType = typename TestFixture::DataType;
  const std::vector<DataType> exp_out = {
      1.,   2.,   5.,   4.,   6.,   4.,   5.,   14.,  10.,  12.,  10.,  14.,
      36.,  24.,  30.,  12.,  15.,  34.,  20.,  24.,  26.,  34.,  76.,  44.,
      54.,  20.,  25.,  54.,  30.,  36.,  35.,  40.,  87.,  48.,  54.,  0.,
      0.,   0.,   0.,   0.,   7.,   14.,  29.,  16.,  24.,  28.,  35.,  74.,
      40.,  48.,  58.,  74.,  156., 84.,  102., 36.,  45.,  94.,  50.,  60.,
      74.,  94.,  196., 104., 126., 44.,  55.,  114., 60.,  72.,  77.,  88.,
      183., 96.,  108., 0.,   0.,   0.,   0.,   0.,   13.,  26.,  53.,  28.,
      42.,  52.,  65.,  134., 70.,  84.,  106., 134., 276., 144., 174., 60.,
      75.,  154., 80.,  96.,  122., 154., 316., 164., 198., 68.,  85.,  174.,
      90.,  108., 119., 136., 279., 144., 162., 0.,   0.,   0.,   0.,   0.};
  const std::array<int, 4> in_shape = {{3, 8, 5, 1}};
  const int multiplier = 1;
  const auto padding = sycldnn::PaddingMode::VALID;
  const DataType max_input_val = 2048.0;
  this->run_input_backprop_test(exp_out, in_shape, multiplier, padding,
                                max_input_val);
}
TYPED_TEST(InputBackpropWindow3Stride2, SAME3x8x5x1x2) {
  using DataType = typename TestFixture::DataType;
  const std::vector<DataType> exp_out = {
      11.,   28.,   25.,   56.,   39.,   29.,   88.,   67.,   164.,  105.,
      100.,  260.,  176.,  412.,  252.,  143.,  316.,  181.,  392.,  219.,
      328.,  716.,  404.,  868.,  480.,  257.,  544.,  295.,  620.,  333.,
      556.,  1172., 632.,  1324., 708.,  371.,  772.,  409.,  848.,  447.,
      179.,  364.,  193.,  392.,  207.,  485.,  1000., 523.,  1076., 561.,
      1012., 2084., 1088., 2236., 1164., 599.,  1228., 637.,  1304., 675.,
      1240., 2540., 1316., 2692., 1392., 713.,  1456., 751.,  1532., 789.,
      1468., 2996., 1544., 3148., 1620., 827.,  1684., 865.,  1760., 903.,
      347.,  700.,  361.,  728.,  375.,  941.,  1912., 979.,  1988., 1017.,
      1924., 3908., 2000., 4060., 2076., 1055., 2140., 1093., 2216., 1131.,
      2152., 4364., 2228., 4516., 2304., 1169., 2368., 1207., 2444., 1245.,
      2380., 4820., 2456., 4972., 2532., 1283., 2596., 1321., 2672., 1359.};
  const std::array<int, 4> in_shape = {{3, 8, 5, 1}};
  const int multiplier = 2;
  const auto padding = sycldnn::PaddingMode::SAME;
  const DataType max_input_val = 2048.0;
  this->run_input_backprop_test(exp_out, in_shape, multiplier, padding,
                                max_input_val);
}
TYPED_TEST(InputBackpropWindow3Stride2, VALID3x8x5x1x2) {
  using DataType = typename TestFixture::DataType;
  const std::vector<DataType> exp_out = {
      5.,   11.,   28.,   25.,   39.,   23.,  29.,  88.,   67.,  81.,
      58.,  86.,   232.,  162.,  206.,  83.,  105., 240.,  143., 173.,
      178., 238.,  536.,  314.,  390.,  143., 181., 392.,  219., 265.,
      257., 295.,  644.,  357.,  403.,  0.,   0.,   0.,    0.,   0.,
      41.,  95.,   196.,  109.,  171.,  203., 257., 544.,  295., 357.,
      418., 542.,  1144., 618.,  758.,  263., 333., 696.,  371., 449.,
      538., 694.,  1448., 770.,  942.,  323., 409., 848.,  447., 541.,
      581., 667.,  1388., 729.,  823.,  0.,   0.,   0.,    0.,   0.,
      77.,  179.,  364.,  193.,  303.,  383., 485., 1000., 523., 633.,
      778., 998.,  2056., 1074., 1310., 443., 561., 1152., 599., 725.,
      898., 1150., 2360., 1226., 1494., 503., 637., 1304., 675., 817.,
      905., 1039., 2132., 1101., 1243., 0.,   0.,   0.,    0.,   0.};
  const std::array<int, 4> in_shape = {{3, 8, 5, 1}};
  const int multiplier = 2;
  const auto padding = sycldnn::PaddingMode::VALID;
  const DataType max_input_val = 2048.0;
  this->run_input_backprop_test(exp_out, in_shape, multiplier, padding,
                                max_input_val);
}
TYPED_TEST(InputBackpropWindow3Stride2, SAME3x8x5x1x4) {
  using DataType = typename TestFixture::DataType;
  const std::vector<DataType> exp_out = {
      70.,    180.,   174.,   388.,   278.,   190.,   612.,   486.,   1204.,
      782.,   692.,   1848.,  1284.,  3032.,  1876.,  1078.,  2388.,  1374.,
      2980.,  1670.,  2468.,  5400.,  3060.,  6584.,  3652.,  1966.,  4164.,
      2262.,  4756.,  2558.,  4244.,  8952.,  4836.,  10136., 5428.,  2854.,
      5940.,  3150.,  6532.,  3446.,  1318.,  2676.,  1422.,  2884.,  1526.,
      3742.,  7716.,  4038.,  8308.,  4334.,  7796.,  16056., 8388.,  17240.,
      8980.,  4630.,  9492.,  4926.,  10084., 5222.,  9572.,  19608., 10164.,
      20792., 10756., 5518.,  11268., 5814.,  11860., 6110.,  11348., 23160.,
      11940., 24344., 12532., 6406.,  13044., 6702.,  13636., 6998.,  2566.,
      5172.,  2670.,  5380.,  2774.,  7294.,  14820., 7590.,  15412., 7886.,
      14900., 30264., 15492., 31448., 16084., 8182.,  16596., 8478.,  17188.,
      8774.,  16676., 33816., 17268., 35000., 17860., 9070.,  18372., 9366.,
      18964., 9662.,  18452., 37368., 19044., 38552., 19636., 9958.,  20148.,
      10254., 20740., 10550.};
  const std::array<int, 4> in_shape = {{3, 8, 5, 1}};
  const int multiplier = 4;
  const auto padding = sycldnn::PaddingMode::SAME;
  const DataType max_input_val = 2048.0;
  this->run_input_backprop_test(exp_out, in_shape, multiplier, padding,
                                max_input_val);
}
TYPED_TEST(InputBackpropWindow3Stride2, VALID3x8x5x1x4) {
  using DataType = typename TestFixture::DataType;
  const std::vector<DataType> exp_out = {
      30.,   70.,   180.,   174.,  278.,   150.,  190.,  612.,   486.,  590.,
      380.,  588.,  1640.,  1180., 1516.,  614.,  782.,  1796.,  1078., 1310.,
      1308., 1772., 4008.,  2364., 2956.,  1078., 1374., 2980.,  1670., 2030.,
      1966., 2262., 4948.,  2750., 3110.,  0.,    0.,    0.,     0.,    0.,
      270.,  694.,  1428.,  798.,  1286.,  1542., 1966., 4164.,  2262., 2750.,
      3164., 4140., 8744.,  4732., 5836.,  2006., 2558., 5348.,  2854., 3470.,
      4092., 5324., 11112., 5916., 7276.,  2470., 3150., 6532.,  3446., 4190.,
      4510., 5190., 10804., 5678., 6422.,  0.,    0.,    0.,     0.,    0.,
      510.,  1318., 2676.,  1422., 2294.,  2934., 3742., 7716.,  4038., 4910.,
      5948., 7692., 15848., 8284., 10156., 3398., 4334., 8900.,  4630., 5630.,
      6876., 8876., 18216., 9468., 11596., 3862., 4926., 10084., 5222., 6350.,
      7054., 8118., 16660., 8606., 9734.,  0.,    0.,    0.,     0.,    0.};
  const std::array<int, 4> in_shape = {{3, 8, 5, 1}};
  const int multiplier = 4;
  const auto padding = sycldnn::PaddingMode::VALID;
  const DataType max_input_val = 2048.0;
  this->run_input_backprop_test(exp_out, in_shape, multiplier, padding,
                                max_input_val);
}
TYPED_TEST(InputBackpropWindow3Stride2, SAME3x8x5x2x1) {
  using DataType = typename TestFixture::DataType;
  const std::vector<DataType> exp_out = {
      3.,    8.,    8.,    20.,   9.,    16.,   20.,   36.,   15.,   24.,
      9.,    20.,   32.,   56.,   27.,   40.,   68.,   96.,   45.,   60.,
      36.,   64.,   100.,  160.,  72.,   104.,  172.,  240.,  108.,  144.,
      63.,   80.,   140.,  176.,  81.,   100.,  176.,  216.,  99.,   120.,
      144.,  184.,  316.,  400.,  180.,  224.,  388.,  480.,  216.,  264.,
      117.,  140.,  248.,  296.,  135.,  160.,  284.,  336.,  153.,  180.,
      252.,  304.,  532.,  640.,  288.,  344.,  604.,  720.,  324.,  384.,
      171.,  200.,  356.,  416.,  189.,  220.,  392.,  456.,  207.,  240.,
      75.,   104.,  152.,  212.,  81.,   112.,  164.,  228.,  87.,   120.,
      225.,  260.,  464.,  536.,  243.,  280.,  500.,  576.,  261.,  300.,
      468.,  544.,  964.,  1120., 504.,  584.,  1036., 1200., 540.,  624.,
      279.,  320.,  572.,  656.,  297.,  340.,  608.,  696.,  315.,  360.,
      576.,  664.,  1180., 1360., 612.,  704.,  1252., 1440., 648.,  744.,
      333.,  380.,  680.,  776.,  351.,  400.,  716.,  816.,  369.,  420.,
      684.,  784.,  1396., 1600., 720.,  824.,  1468., 1680., 756.,  864.,
      387.,  440.,  788.,  896.,  405.,  460.,  824.,  936.,  423.,  480.,
      147.,  200.,  296.,  404.,  153.,  208.,  308.,  420.,  159.,  216.,
      441.,  500.,  896.,  1016., 459.,  520.,  932.,  1056., 477.,  540.,
      900.,  1024., 1828., 2080., 936.,  1064., 1900., 2160., 972.,  1104.,
      495.,  560.,  1004., 1136., 513.,  580.,  1040., 1176., 531.,  600.,
      1008., 1144., 2044., 2320., 1044., 1184., 2116., 2400., 1080., 1224.,
      549.,  620.,  1112., 1256., 567.,  640.,  1148., 1296., 585.,  660.,
      1116., 1264., 2260., 2560., 1152., 1304., 2332., 2640., 1188., 1344.,
      603.,  680.,  1220., 1376., 621.,  700.,  1256., 1416., 639.,  720.};
  const std::array<int, 4> in_shape = {{3, 8, 5, 2}};
  const int multiplier = 1;
  const auto padding = sycldnn::PaddingMode::SAME;
  const DataType max_input_val = 2048.0;
  this->run_input_backprop_test(exp_out, in_shape, multiplier, padding,
                                max_input_val);
}
TYPED_TEST(InputBackpropWindow3Stride2, VALID3x8x5x2x1) {
  using DataType = typename TestFixture::DataType;
  const std::vector<DataType> exp_out = {
      1.,   4.,   3.,   8.,   8.,    20.,   9.,    16.,   15.,  24.,   7.,
      16.,  9.,   20.,  32.,  56.,   27.,   40.,   33.,   48.,  18.,   40.,
      30.,  56.,  88.,  144., 66.,   96.,   86.,   120.,  35.,  48.,   45.,
      60.,  104., 136., 63.,  80.,   77.,   96.,   74.,   104., 102.,  136.,
      232., 304., 138., 176., 174.,  216.,  63.,   80.,   81.,  100.,  176.,
      216., 99.,  120., 121., 144.,  117.,  140.,  135.,  160., 296.,  348.,
      165., 192., 187., 216., 0.,    0.,    0.,    0.,    0.,   0.,    0.,
      0.,   0.,   0.,   13.,  28.,   39.,   56.,   80.,   116., 45.,   64.,
      75.,  96.,  91.,  112., 117.,  140.,  248.,  296.,  135., 160.,  165.,
      192., 186., 232., 246., 296.,  520.,  624.,  282.,  336., 350.,  408.,
      119., 144., 153., 180., 320.,  376.,  171.,  200.,  209., 240.,  242.,
      296., 318., 376., 664., 784.,  354.,  416.,  438.,  504., 147.,  176.,
      189., 220., 392., 456., 207.,  240.,  253.,  288.,  273., 308.,  315.,
      352., 656., 732., 345., 384.,  391.,  432.,  0.,    0.,   0.,    0.,
      0.,   0.,   0.,   0.,   0.,    0.,    25.,   52.,   75.,  104.,  152.,
      212., 81.,  112., 135., 168.,  175.,  208.,  225.,  260., 464.,  536.,
      243., 280., 297., 336., 354.,  424.,  462.,  536.,  952., 1104., 498.,
      576., 614., 696., 203., 240.,  261.,  300.,  536.,  616., 279.,  320.,
      341., 384., 410., 488., 534.,  616.,  1096., 1264., 570., 656.,  702.,
      792., 231., 272., 297., 340.,  608.,  696.,  315.,  360., 385.,  432.,
      429., 476., 495., 544., 1016., 1116., 525.,  576.,  595., 648.,  0.,
      0.,   0.,   0.,   0.,   0.,    0.,    0.,    0.,    0.};
  const std::array<int, 4> in_shape = {{3, 8, 5, 2}};
  const int multiplier = 1;
  const auto padding = sycldnn::PaddingMode::VALID;
  const DataType max_input_val = 2048.0;
  this->run_input_backprop_test(exp_out, in_shape, multiplier, padding,
                                max_input_val);
}
TYPED_TEST(InputBackpropWindow3Stride2, SAME3x8x5x2x2) {
  using DataType = typename TestFixture::DataType;
  const std::vector<DataType> exp_out = {
      17.,    53.,    46.,    134.,   61.,    113.,   134.,   254.,   105.,
      173.,   53.,    137.,   214.,   398.,   193.,   293.,   494.,   710.,
      333.,   449.,   238.,   454.,   692.,   1156.,  518.,   766.,   1252.,
      1780.,  798.,   1078.,  473.,   605.,   1054.,  1334.,  613.,   761.,
      1334.,  1646.,  753.,   917.,   1078.,  1390.,  2372.,  3028.,  1358.,
      1702.,  2932.,  3652.,  1638.,  2014.,  893.,   1073.,  1894.,  2270.,
      1033.,  1229.,  2174.,  2582.,  1173.,  1385.,  1918.,  2326.,  4052.,
      4900.,  2198.,  2638.,  4612.,  5524.,  2478.,  2950.,  1313.,  1541.,
      2734.,  3206.,  1453.,  1697.,  3014.,  3518.,  1593.,  1853.,  545.,
      773.,   1102.,  1574.,  589.,   833.,   1190.,  1694.,  633.,   893.,
      1733.,  2009.,  3574.,  4142.,  1873.,  2165.,  3854.,  4454.,  2013.,
      2321.,  3598.,  4198.,  7412.,  8644.,  3878.,  4510.,  7972.,  9268.,
      4158.,  4822.,  2153.,  2477.,  4414.,  5078.,  2293.,  2633.,  4694.,
      5390.,  2433.,  2789.,  4438.,  5134.,  9092.,  10516., 4718.,  5446.,
      9652.,  11140., 4998.,  5758.,  2573.,  2945.,  5254.,  6014.,  2713.,
      3101.,  5534.,  6326.,  2853.,  3257.,  5278.,  6070.,  10772., 12388.,
      5558.,  6382.,  11332., 13012., 5838.,  6694.,  2993.,  3413.,  6094.,
      6950.,  3133.,  3569.,  6374.,  7262.,  3273.,  3725.,  1073.,  1493.,
      2158.,  3014.,  1117.,  1553.,  2246.,  3134.,  1161.,  1613.,  3413.,
      3881.,  6934.,  7886.,  3553.,  4037.,  7214.,  8198.,  3693.,  4193.,
      6958.,  7942.,  14132., 16132., 7238.,  8254.,  14692., 16756., 7518.,
      8566.,  3833.,  4349.,  7774.,  8822.,  3973.,  4505.,  8054.,  9134.,
      4113.,  4661.,  7798.,  8878.,  15812., 18004., 8078.,  9190.,  16372.,
      18628., 8358.,  9502.,  4253.,  4817.,  8614.,  9758.,  4393.,  4973.,
      8894.,  10070., 4533.,  5129.,  8638.,  9814.,  17492., 19876., 8918.,
      10126., 18052., 20500., 9198.,  10438., 4673.,  5285.,  9454.,  10694.,
      4813.,  5441.,  9734.,  11006., 4953.,  5597.};
  const std::array<int, 4> in_shape = {{3, 8, 5, 2}};
  const int multiplier = 2;
  const auto padding = sycldnn::PaddingMode::SAME;
  const DataType max_input_val = 2048.0;
  this->run_input_backprop_test(exp_out, in_shape, multiplier, padding,
                                max_input_val);
}
TYPED_TEST(InputBackpropWindow3Stride2, VALID3x8x5x2x2) {
  using DataType = typename TestFixture::DataType;
  const std::vector<DataType> exp_out = {
      5.,    25.,   17.,   53.,   46.,   134.,  61.,   113.,  105.,  173.,
      41.,   109.,  53.,   137.,  214.,  398.,  193.,  293.,  237.,  353.,
      106.,  274.,  194.,  394.,  604.,  1036., 474.,  706.,  626.,  890.,
      257.,  357.,  333.,  449.,  774.,  1022., 473.,  605.,  581.,  729.,
      538.,  770.,  754.,  1018., 1724., 2284., 1034., 1330., 1314., 1642.,
      473.,  605.,  613.,  761.,  1334., 1646., 753.,  917.,  925.,  1105.,
      893.,  1073., 1033., 1229., 2270., 2678., 1269., 1481., 1441., 1669.,
      0.,    0.,    0.,    0.,    0.,    0.,    0.,    0.,    0.,    0.,
      77.,   193.,  281.,  413.,  574.,  854.,  325.,  473.,  561.,  725.,
      689.,  853.,  893.,  1073., 1894., 2270., 1033., 1229., 1269., 1481.,
      1402., 1762., 1874., 2266., 3964., 4780., 2154., 2578., 2690., 3146.,
      905.,  1101., 1173., 1385., 2454., 2894., 1313., 1541., 1613., 1857.,
      1834., 2258., 2434., 2890., 5084., 6028., 2714., 3202., 3378., 3898.,
      1121., 1349., 1453., 1697., 3014., 3518., 1593., 1853., 1957., 2233.,
      2117., 2393., 2449., 2741., 5102., 5702., 2685., 2993., 3049., 3373.,
      0.,    0.,    0.,    0.,    0.,    0.,    0.,    0.,    0.,    0.,
      149.,  361.,  545.,  773.,  1102., 1574., 589.,  833.,  1017., 1277.,
      1337., 1597., 1733., 2009., 3574., 4142., 1873., 2165., 2301., 2609.,
      2698., 3250., 3554., 4138., 7324., 8524., 3834., 4450., 4754., 5402.,
      1553., 1845., 2013., 2321., 4134., 4766., 2153., 2477., 2645., 2985.,
      3130., 3746., 4114., 4762., 8444., 9772., 4394., 5074., 5442., 6154.,
      1769., 2093., 2293., 2633., 4694., 5390., 2433., 2789., 2989., 3361.,
      3341., 3713., 3865., 4253., 7934., 8726., 4101., 4505., 4657., 5077.,
      0.,    0.,    0.,    0.,    0.,    0.,    0.,    0.,    0.,    0.};
  const std::array<int, 4> in_shape = {{3, 8, 5, 2}};
  const int multiplier = 2;
  const auto padding = sycldnn::PaddingMode::VALID;
  const DataType max_input_val = 2048.0;
  this->run_input_backprop_test(exp_out, in_shape, multiplier, padding,
                                max_input_val);
}
TYPED_TEST(InputBackpropWindow3Stride2, SAME3x8x5x2x4) {
  using DataType = typename TestFixture::DataType;
  const std::vector<DataType> exp_out = {
      110.,   382.,   300.,    972.,    446.,   846.,   972.,    1900.,
      782.,   1310.,  350.,    1006.,   1548.,  2988.,  1454.,   2238.,
      3756.,  5452.,  2558.,   3470.,   1708.,  3404.,  5112.,   8760.,
      3916.,  5868.,  9528.,   13688.,  6124.,  8332.,  3662.,   4702.,
      8172.,  10380., 4766.,   5934.,   10380., 12844., 5870.,   7166.,
      8332.,  10796., 18360.,  23544.,  10540., 13260., 22776.,  28472.,
      12748., 15724., 6974.,   8398.,   14796., 17772., 8078.,   9630.,
      17004., 20236., 9182.,   10862.,  14956., 18188., 31608.,  38328.,
      17164., 20652., 36024.,  43256.,  19372., 23116., 10286.,  12094.,
      21420., 25164., 11390.,  13326.,  23628., 27628., 12494.,  14558.,
      4142.,  5950.,  8364.,   12108.,  4478.,  6414.,  9036.,   13036.,
      4814.,  6878.,  13598.,  15790.,  28044., 32556., 14702.,  17022.,
      30252., 35020., 15806.,  18254.,  28204., 32972., 58104.,  67896.,
      30412., 35436., 62520.,  72824.,  32620., 37900., 16910.,  19486.,
      34668., 39948., 18014.,  20718.,  36876., 42412., 19118.,  21950.,
      34828., 40364., 71352.,  82680.,  37036., 42828., 75768.,  87608.,
      39244., 45292., 20222.,  23182.,  41292., 47340., 21326.,  24414.,
      43500., 49804., 22430.,  25646.,  41452., 47756., 84600.,  97464.,
      43660., 50220., 89016.,  102392., 45868., 52684., 23534.,  26878.,
      47916., 54732., 24638.,  28110.,  50124., 57196., 25742.,  29342.,
      8174.,  11518., 16428.,  23244.,  8510.,  11982., 17100.,  24172.,
      8846.,  12446., 26846.,  30574.,  54540., 62124., 27950.,  31806.,
      56748., 64588., 29054.,  33038.,  54700., 62540., 111096., 127032.,
      56908., 65004., 115512., 131960., 59116., 67468., 30158.,  34270.,
      61164., 69516., 31262.,  35502.,  63372., 71980., 32366.,  36734.,
      61324., 69932., 124344., 141816., 63532., 72396., 128760., 146744.,
      65740., 74860., 33470.,  37966.,  67788., 76908., 34574.,  39198.,
      69996., 79372., 35678.,  40430.,  67948., 77324., 137592., 156600.,
      70156., 79788., 142008., 161528., 72364., 82252., 36782.,  41662.,
      74412., 84300., 37886.,  42894.,  76620., 86764., 38990.,  44126.};
  const std::array<int, 4> in_shape = {{3, 8, 5, 2}};
  const int multiplier = 4;
  const auto padding = sycldnn::PaddingMode::SAME;
  const DataType max_input_val = 2048.0;
  this->run_input_backprop_test(exp_out, in_shape, multiplier, padding,
                                max_input_val);
}
TYPED_TEST(InputBackpropWindow3Stride2, VALID3x8x5x2x4) {
  using DataType = typename TestFixture::DataType;
  const std::vector<DataType> exp_out = {
      30.,    174.,   110.,   382.,   300.,   972.,   446.,   846.,   782.,
      1310.,  270.,   798.,   350.,   1006.,  1548.,  2988.,  1454.,  2238.,
      1790.,  2702.,  700.,   2012.,  1372.,  2940.,  4440.,  7832.,  3580.,
      5404.,  4764.,  6844.,  1966.,  2750.,  2558.,  3470.,  5964.,  7916.,
      3662.,  4702.,  4510.,  5678.,  4092.,  5916.,  5788.,  7868.,  13272.,
      17688., 7996.,  10332., 10204., 12796., 3662.,  4702.,  4766.,  5934.,
      10380., 12844., 5870.,  7166.,  7230.,  8654.,  6974.,  8398.,  8078.,
      9630.,  17772., 21004., 9950.,  11630., 11310., 13118., 0.,     0.,
      0.,     0.,     0.,     0.,     0.,     0.,     0.,     0.,     510.,
      1422.,  2126.,  3166.,  4332.,  6540.,  2462.,  3630.,  4334.,  5630.,
      5358.,  6654.,  6974.,  8398.,  14796., 17772., 8078.,  9630.,  9950.,
      11630., 10876., 13724., 14620., 17724., 30936., 37400., 16828., 20188.,
      21084., 24700., 7054.,  8606.,  9182.,  10862., 19212., 22700., 10286.,
      12094., 12670., 14606., 14268., 17628., 19036., 22652., 39768., 47256.,
      21244., 25116., 26524., 30652., 8750.,  10558., 11390., 13326., 23628.,
      27628., 12494., 14558., 15390., 17582., 16670., 18862., 19310., 21630.,
      40236., 45004., 21182., 23630., 24078., 26654., 0.,     0.,     0.,
      0.,     0.,     0.,     0.,     0.,     0.,     0.,     990.,   2670.,
      4142.,  5950.,  8364.,  12108., 4478.,  6414.,  7886.,  9950.,  10446.,
      12510., 13598., 15790., 28044., 32556., 14702., 17022., 18110., 20558.,
      21052., 25436., 27868., 32508., 57432., 66968., 30076., 34972., 37404.,
      42556., 12142., 14462., 15806., 18254., 32460., 37484., 16910., 19486.,
      20830., 23534., 24444., 29340., 32284., 37436., 66264., 76824., 34492.,
      39900., 42844., 48508., 13838., 16414., 18014., 20718., 36876., 42412.,
      19118., 21950., 23550., 26510., 26366., 29326., 30542., 33630., 62700.,
      69004., 32414., 35630., 36846., 40190., 0.,     0.,     0.,     0.,
      0.,     0.,     0.,     0.,     0.,     0.};
  const std::array<int, 4> in_shape = {{3, 8, 5, 2}};
  const int multiplier = 4;
  const auto padding = sycldnn::PaddingMode::VALID;
  const DataType max_input_val = 2048.0;
  this->run_input_backprop_test(exp_out, in_shape, multiplier, padding,
                                max_input_val);
}
TYPED_TEST(InputBackpropWindow3Stride2, SAME3x8x5x4x1) {
  using DataType = typename TestFixture::DataType;
  const std::vector<DataType> exp_out = {
      5.,    12.,   21.,   32.,   14.,   32.,    54.,   80.,    25.,   36.,
      49.,   64.,   54.,   80.,   110.,  144.,   45.,   60.,    77.,   96.,
      17.,   36.,   57.,   80.,   86.,   128.,   174.,  224.,   85.,   108.,
      133.,  160.,  222.,  272.,  326.,  384.,   153.,  180.,   209.,  240.,
      94.,   144.,  198.,  256.,  292.,  400.,   516.,  640.,   230.,  288.,
      350.,  416.,  564.,  688.,  820.,  960.,   366.,  432.,   502.,  576.,
      221.,  252.,  285.,  320.,  494.,  560.,   630.,  704.,   289.,  324.,
      361.,  400.,  630.,  704.,  782.,  864.,   357.,  396.,   437.,  480.,
      502.,  576.,  654.,  736.,  1108., 1264.,  1428., 1600.,  638.,  720.,
      806.,  896.,  1380., 1552., 1732., 1920.,  774.,  864.,   958.,  1056.,
      425.,  468.,  513.,  560.,  902.,  992.,   1086., 1184.,  493.,  540.,
      589.,  640.,  1038., 1136., 1238., 1344.,  561.,  612.,   665.,  720.,
      910.,  1008., 1110., 1216., 1924., 2128.,  2340., 2560.,  1046., 1152.,
      1262., 1376., 2196., 2416., 2644., 2880.,  1182., 1296.,  1414., 1536.,
      629.,  684.,  741.,  800.,  1310., 1424.,  1542., 1664.,  697.,  756.,
      817.,  880.,  1446., 1568., 1694., 1824.,  765.,  828.,   893.,  960.,
      245.,  300.,  357.,  416.,  494.,  608.,   726.,  848.,   265.,  324.,
      385.,  448.,  534.,  656.,  782.,  912.,   285.,  348.,   413.,  480.,
      833.,  900.,  969.,  1040., 1718., 1856.,  1998., 2144.,  901.,  972.,
      1045., 1120., 1854., 2000., 2150., 2304.,  969.,  1044.,  1121., 1200.,
      1726., 1872., 2022., 2176., 3556., 3856.,  4164., 4480.,  1862., 2016.,
      2174., 2336., 3828., 4144., 4468., 4800.,  1998., 2160.,  2326., 2496.,
      1037., 1116., 1197., 1280., 2126., 2288.,  2454., 2624.,  1105., 1188.,
      1273., 1360., 2262., 2432., 2606., 2784.,  1173., 1260.,  1349., 1440.,
      2134., 2304., 2478., 2656., 4372., 4720.,  5076., 5440.,  2270., 2448.,
      2630., 2816., 4644., 5008., 5380., 5760.,  2406., 2592.,  2782., 2976.,
      1241., 1332., 1425., 1520., 2534., 2720.,  2910., 3104.,  1309., 1404.,
      1501., 1600., 2670., 2864., 3062., 3264.,  1377., 1476.,  1577., 1680.,
      2542., 2736., 2934., 3136., 5188., 5584.,  5988., 6400.,  2678., 2880.,
      3086., 3296., 5460., 5872., 6292., 6720.,  2814., 3024.,  3238., 3456.,
      1445., 1548., 1653., 1760., 2942., 3152.,  3366., 3584.,  1513., 1620.,
      1729., 1840., 3078., 3296., 3518., 3744.,  1581., 1692.,  1805., 1920.,
      485.,  588.,  693.,  800.,  974.,  1184.,  1398., 1616.,  505.,  612.,
      721.,  832.,  1014., 1232., 1454., 1680.,  525.,  636.,   749.,  864.,
      1649., 1764., 1881., 2000., 3350., 3584.,  3822., 4064.,  1717., 1836.,
      1957., 2080., 3486., 3728., 3974., 4224.,  1785., 1908.,  2033., 2160.,
      3358., 3600., 3846., 4096., 6820., 7312.,  7812., 8320.,  3494., 3744.,
      3998., 4256., 7092., 7600., 8116., 8640.,  3630., 3888.,  4150., 4416.,
      1853., 1980., 2109., 2240., 3758., 4016.,  4278., 4544.,  1921., 2052.,
      2185., 2320., 3894., 4160., 4430., 4704.,  1989., 2124.,  2261., 2400.,
      3766., 4032., 4302., 4576., 7636., 8176.,  8724., 9280.,  3902., 4176.,
      4454., 4736., 7908., 8464., 9028., 9600.,  4038., 4320.,  4606., 4896.,
      2057., 2196., 2337., 2480., 4166., 4448.,  4734., 5024.,  2125., 2268.,
      2413., 2560., 4302., 4592., 4886., 5184.,  2193., 2340.,  2489., 2640.,
      4174., 4464., 4758., 5056., 8452., 9040.,  9636., 10240., 4310., 4608.,
      4910., 5216., 8724., 9328., 9940., 10560., 4446., 4752.,  5062., 5376.,
      2261., 2412., 2565., 2720., 4574., 4880.,  5190., 5504.,  2329., 2484.,
      2641., 2800., 4710., 5024., 5342., 5664.,  2397., 2556.,  2717., 2880.};
  const std::array<int, 4> in_shape = {{3, 8, 5, 4}};
  const int multiplier = 1;
  const auto padding = sycldnn::PaddingMode::SAME;
  const DataType max_input_val = 2048.0;
  this->run_input_backprop_test(exp_out, in_shape, multiplier, padding,
                                max_input_val);
}
TYPED_TEST(InputBackpropWindow3Stride2, VALID3x8x5x4x1) {
  using DataType = typename TestFixture::DataType;
  const std::vector<DataType> exp_out = {
      1.,    4.,    9.,    16.,   5.,    12.,   21.,   32.,   14.,   32.,
      54.,   80.,   25.,   36.,   49.,   64.,   45.,   60.,   77.,   96.,
      13.,   28.,   45.,   64.,   17.,   36.,   57.,   80.,   86.,   128.,
      174.,  224.,  85.,   108.,  133.,  160.,  105.,  132.,  161.,  192.,
      34.,   72.,   114.,  160.,  74.,   120.,  170.,  224.,  252.,  352.,
      460.,  576.,  210.,  264.,  322.,  384.,  282.,  344.,  410.,  480.,
      117.,  140.,  165.,  192.,  153.,  180.,  209.,  240.,  358.,  416.,
      478.,  544.,  221.,  252.,  285.,  320.,  273.,  308.,  345.,  384.,
      242.,  296.,  354.,  416.,  346.,  408.,  474.,  544.,  796.,  928.,
      1068., 1216., 482.,  552.,  626.,  704.,  618.,  696.,  778.,  864.,
      221.,  252.,  285.,  320.,  289.,  324.,  361.,  400.,  630.,  704.,
      782.,  864.,  357.,  396.,  437.,  480.,  441.,  484.,  529.,  576.,
      425.,  468.,  513.,  560.,  493.,  540.,  589.,  640.,  1086., 1184.,
      1286., 1392., 609.,  660.,  713.,  768.,  693.,  748.,  805.,  864.,
      0.,    0.,    0.,    0.,    0.,    0.,    0.,    0.,    0.,    0.,
      0.,    0.,    0.,    0.,    0.,    0.,    0.,    0.,    0.,    0.,
      25.,   52.,   81.,   112.,  125.,  156.,  189.,  224.,  254.,  320.,
      390.,  464.,  145.,  180.,  217.,  256.,  261.,  300.,  341.,  384.,
      325.,  364.,  405.,  448.,  425.,  468.,  513.,  560.,  902.,  992.,
      1086., 1184., 493.,  540.,  589.,  640.,  609.,  660.,  713.,  768.,
      658.,  744.,  834.,  928.,  890.,  984.,  1082., 1184., 1884., 2080.,
      2284., 2496., 1026., 1128., 1234., 1344., 1290., 1400., 1514., 1632.,
      429.,  476.,  525.,  576.,  561.,  612.,  665.,  720.,  1174., 1280.,
      1390., 1504., 629.,  684.,  741.,  800.,  777.,  836.,  897.,  960.,
      866.,  968.,  1074., 1184., 1162., 1272., 1386., 1504., 2428., 2656.,
      2892., 3136., 1298., 1416., 1538., 1664., 1626., 1752., 1882., 2016.,
      533.,  588.,  645.,  704.,  697.,  756.,  817.,  880.,  1446., 1568.,
      1694., 1824., 765.,  828.,  893.,  960.,  945.,  1012., 1081., 1152.,
      1025., 1092., 1161., 1232., 1189., 1260., 1333., 1408., 2478., 2624.,
      2774., 2928., 1305., 1380., 1457., 1536., 1485., 1564., 1645., 1728.,
      0.,    0.,    0.,    0.,    0.,    0.,    0.,    0.,    0.,    0.,
      0.,    0.,    0.,    0.,    0.,    0.,    0.,    0.,    0.,    0.,
      49.,   100.,  153.,  208.,  245.,  300.,  357.,  416.,  494.,  608.,
      726.,  848.,  265.,  324.,  385.,  448.,  477.,  540.,  605.,  672.,
      637.,  700.,  765.,  832.,  833.,  900.,  969.,  1040., 1718., 1856.,
      1998., 2144., 901.,  972.,  1045., 1120., 1113., 1188., 1265., 1344.,
      1282., 1416., 1554., 1696., 1706., 1848., 1994., 2144., 3516., 3808.,
      4108., 4416., 1842., 1992., 2146., 2304., 2298., 2456., 2618., 2784.,
      741.,  812.,  885.,  960.,  969.,  1044., 1121., 1200., 1990., 2144.,
      2302., 2464., 1037., 1116., 1197., 1280., 1281., 1364., 1449., 1536.,
      1490., 1640., 1794., 1952., 1978., 2136., 2298., 2464., 4060., 4384.,
      4716., 5056., 2114., 2280., 2450., 2624., 2634., 2808., 2986., 3168.,
      845.,  924.,  1005., 1088., 1105., 1188., 1273., 1360., 2262., 2432.,
      2606., 2784., 1173., 1260., 1349., 1440., 1449., 1540., 1633., 1728.,
      1625., 1716., 1809., 1904., 1885., 1980., 2077., 2176., 3870., 4064.,
      4262., 4464., 2001., 2100., 2201., 2304., 2277., 2380., 2485., 2592.,
      0.,    0.,    0.,    0.,    0.,    0.,    0.,    0.,    0.,    0.,
      0.,    0.,    0.,    0.,    0.,    0.,    0.,    0.,    0.,    0.};
  const std::array<int, 4> in_shape = {{3, 8, 5, 4}};
  const int multiplier = 1;
  const auto padding = sycldnn::PaddingMode::VALID;
  const DataType max_input_val = 2048.0;
  this->run_input_backprop_test(exp_out, in_shape, multiplier, padding,
                                max_input_val);
}
TYPED_TEST(InputBackpropWindow3Stride2, SAME3x8x5x4x2) {
  using DataType = typename TestFixture::DataType;
  const std::vector<DataType> exp_out = {
      29.,    81.,    149.,   233.,   82.,    218.,   386.,   586.,   181.,
      265.,   365.,   481.,   386.,   586.,   818.,   1082.,  333.,   449.,
      581.,   729.,   101.,   249.,   413.,   593.,   610.,   938.,   1298.,
      1690.,  637.,   817.,   1013.,  1225.,  1682.,  2074.,  2498.,  2954.,
      1173.,  1385.,  1613.,  1857.,  658.,   1050.,  1474.,  1930.,  2132.,
      2980.,  3892.,  4868.,  1730.,  2186.,  2674.,  3194.,  4276.,  5252.,
      6292.,  7396.,  2802.,  3322.,  3874.,  4458.,  1709.,  1953.,  2213.,
      2489.,  3826.,  4346.,  4898.,  5482.,  2245.,  2521.,  2813.,  3121.,
      4898.,  5482.,  6098.,  6746.,  2781.,  3089.,  3413.,  3753.,  3874.,
      4458.,  5074.,  5722.,  8564.,  9796.,  11092., 12452., 4946.,  5594.,
      6274.,  6986.,  10708., 12068., 13492., 14980., 6018.,  6730.,  7474.,
      8250.,  3317.,  3657.,  4013.,  4385.,  7042.,  7754.,  8498.,  9274.,
      3853.,  4225.,  4613.,  5017.,  8114.,  8890.,  9698.,  10538., 4389.,
      4793.,  5213.,  5649.,  7090.,  7866.,  8674.,  9514.,  14996., 16612.,
      18292., 20036., 8162.,  9002.,  9874.,  10778., 17140., 18884., 20692.,
      22564., 9234.,  10138., 11074., 12042., 4925.,  5361.,  5813.,  6281.,
      10258., 11162., 12098., 13066., 5461.,  5929.,  6413.,  6913.,  11330.,
      12298., 13298., 14330., 5997.,  6497.,  7013.,  7545.,  1853.,  2289.,
      2741.,  3209.,  3730.,  4634.,  5570.,  6538.,  2005.,  2473.,  2957.,
      3457.,  4034.,  5002.,  6002.,  7034.,  2157.,  2657.,  3173.,  3705.,
      6533.,  7065.,  7613.,  8177.,  13474., 14570., 15698., 16858., 7069.,
      7633.,  8213.,  8809.,  14546., 15706., 16898., 18122., 7605.,  8201.,
      8813.,  9441.,  13522., 14682., 15874., 17098., 27860., 30244., 32692.,
      35204., 14594., 15818., 17074., 18362., 30004., 32516., 35092., 37732.,
      15666., 16954., 18274., 19626., 8141.,  8769.,  9413.,  10073., 16690.,
      17978., 19298., 20650., 8677.,  9337.,  10013., 10705., 17762., 19114.,
      20498., 21914., 9213.,  9905.,  10613., 11337., 16738., 18090., 19474.,
      20890., 34292., 37060., 39892., 42788., 17810., 19226., 20674., 22154.,
      36436., 39332., 42292., 45316., 18882., 20362., 21874., 23418., 9749.,
      10473., 11213., 11969., 19906., 21386., 22898., 24442., 10285., 11041.,
      11813., 12601., 20978., 22522., 24098., 25706., 10821., 11609., 12413.,
      13233., 19954., 21498., 23074., 24682., 40724., 43876., 47092., 50372.,
      21026., 22634., 24274., 25946., 42868., 46148., 49492., 52900., 22098.,
      23770., 25474., 27210., 11357., 12177., 13013., 13865., 23122., 24794.,
      26498., 28234., 11893., 12745., 13613., 14497., 24194., 25930., 27698.,
      29498., 12429., 13313., 14213., 15129., 3677.,  4497.,  5333.,  6185.,
      7378.,  9050.,  10754., 12490., 3829.,  4681.,  5549.,  6433.,  7682.,
      9418.,  11186., 12986., 3981.,  4865.,  5765.,  6681.,  12965., 13881.,
      14813., 15761., 26338., 28202., 30098., 32026., 13501., 14449., 15413.,
      16393., 27410., 29338., 31298., 33290., 14037., 15017., 16013., 17025.,
      26386., 28314., 30274., 32266., 53588., 57508., 61492., 65540., 27458.,
      29450., 31474., 33530., 55732., 59780., 63892., 68068., 28530., 30586.,
      32674., 34794., 14573., 15585., 16613., 17657., 29554., 31610., 33698.,
      35818., 15109., 16153., 17213., 18289., 30626., 32746., 34898., 37082.,
      15645., 16721., 17813., 18921., 29602., 31722., 33874., 36058., 60020.,
      64324., 68692., 73124., 30674., 32858., 35074., 37322., 62164., 66596.,
      71092., 75652., 31746., 33994., 36274., 38586., 16181., 17289., 18413.,
      19553., 32770., 35018., 37298., 39610., 16717., 17857., 19013., 20185.,
      33842., 36154., 38498., 40874., 17253., 18425., 19613., 20817., 32818.,
      35130., 37474., 39850., 66452., 71140., 75892., 80708., 33890., 36266.,
      38674., 41114., 68596., 73412., 78292., 83236., 34962., 37402., 39874.,
      42378., 17789., 18993., 20213., 21449., 35986., 38426., 40898., 43402.,
      18325., 19561., 20813., 22081., 37058., 39562., 42098., 44666., 18861.,
      20129., 21413., 22713.};
  const std::array<int, 4> in_shape = {{3, 8, 5, 4}};
  const int multiplier = 2;
  const auto padding = sycldnn::PaddingMode::SAME;
  const DataType max_input_val = 2048.0;
  this->run_input_backprop_test(exp_out, in_shape, multiplier, padding,
                                max_input_val);
}
TYPED_TEST(InputBackpropWindow3Stride2, VALID3x8x5x4x2) {
  using DataType = typename TestFixture::DataType;
  const std::vector<DataType> exp_out = {
      5.,     25.,    61.,    113.,   29.,    81.,    149.,   233.,   82.,
      218.,   386.,   586.,   181.,   265.,   365.,   481.,   333.,   449.,
      581.,   729.,   77.,    193.,   325.,   473.,   101.,   249.,   413.,
      593.,   610.,   938.,   1298.,  1690.,  637.,   817.,   1013.,  1225.,
      789.,   1001.,  1229.,  1473.,  202.,   498.,   826.,   1186.,  506.,
      866.,   1258.,  1682.,  1828.,  2612.,  3460.,  4372.,  1578.,  2002.,
      2458.,  2946.,  2138.,  2626.,  3146.,  3698.,  893.,   1073.,  1269.,
      1481.,  1173.,  1385.,  1613.,  1857.,  2754.,  3210.,  3698.,  4218.,
      1709.,  1953.,  2213.,  2489.,  2117.,  2393.,  2685.,  2993.,  1834.,
      2258.,  2714.,  3202.,  2650.,  3138.,  3658.,  4210.,  6116.,  7156.,
      8260.,  9428.,  3722.,  4274.,  4858.,  5474.,  4794.,  5410.,  6058.,
      6738.,  1709.,  1953.,  2213.,  2489.,  2245.,  2521.,  2813.,  3121.,
      4898.,  5482.,  6098.,  6746.,  2781.,  3089.,  3413.,  3753.,  3445.,
      3785.,  4141.,  4513.,  3317.,  3657.,  4013.,  4385.,  3853.,  4225.,
      4613.,  5017.,  8498.,  9274.,  10082., 10922., 4773.,  5177.,  5597.,
      6033.,  5437.,  5873.,  6325.,  6793.,  0.,     0.,     0.,     0.,
      0.,     0.,     0.,     0.,     0.,     0.,     0.,     0.,     0.,
      0.,     0.,     0.,     0.,     0.,     0.,     0.,     149.,   361.,
      589.,   833.,   941.,   1185.,  1445.,  1721.,  1906.,  2426.,  2978.,
      3562.,  1093.,  1369.,  1661.,  1969.,  2013.,  2321.,  2645.,  2985.,
      2525.,  2833.,  3157.,  3497.,  3317.,  3657.,  4013.,  4385.,  7042.,
      7754.,  8498.,  9274.,  3853.,  4225.,  4613.,  5017.,  4773.,  5177.,
      5597.,  6033.,  5098.,  5778.,  6490.,  7234.,  6938.,  7682.,  8458.,
      9266.,  14692., 16244., 17860., 19540., 8010.,  8818.,  9658.,  10530.,
      10106., 10978., 11882., 12818., 3341.,  3713.,  4101.,  4505.,  4389.,
      4793.,  5213.,  5649.,  9186.,  10026., 10898., 11802., 4925.,  5361.,
      5813.,  6281.,  6101.,  6569.,  7053.,  7553.,  6730.,  7538.,  8378.,
      9250.,  9082.,  9954.,  10858., 11794., 18980., 20788., 22660., 24596.,
      10154., 11090., 12058., 13058., 12762., 13762., 14794., 15858., 4157.,
      4593.,  5045.,  5513.,  5461.,  5929.,  6413.,  6913.,  11330., 12298.,
      13298., 14330., 5997.,  6497.,  7013.,  7545.,  7429.,  7961.,  8509.,
      9073.,  8069.,  8601.,  9149.,  9713.,  9373.,  9937.,  10517., 11113.,
      19538., 20698., 21890., 23114., 10293., 10889., 11501., 12129., 11725.,
      12353., 12997., 13657., 0.,     0.,     0.,     0.,     0.,     0.,
      0.,     0.,     0.,     0.,     0.,     0.,     0.,     0.,     0.,
      0.,     0.,     0.,     0.,     0.,     293.,   697.,   1117.,  1553.,
      1853.,  2289.,  2741.,  3209.,  3730.,  4634.,  5570.,  6538.,  2005.,
      2473.,  2957.,  3457.,  3693.,  4193.,  4709.,  5241.,  4973.,  5473.,
      5989.,  6521.,  6533.,  7065.,  7613.,  8177.,  13474., 14570., 15698.,
      16858., 7069.,  7633.,  8213.,  8809.,  8757.,  9353.,  9965.,  10593.,
      9994.,  11058., 12154., 13282., 13370., 14498., 15658., 16850., 27556.,
      29876., 32260., 34708., 14442., 15634., 16858., 18114., 18074., 19330.,
      20618., 21938., 5789.,  6353.,  6933.,  7529.,  7605.,  8201.,  8813.,
      9441.,  15618., 16842., 18098., 19386., 8141.,  8769.,  9413.,  10073.,
      10085., 10745., 11421., 12113., 11626., 12818., 14042., 15298., 15514.,
      16770., 18058., 19378., 31844., 34420., 37060., 39764., 16586., 17906.,
      19258., 20642., 20730., 22114., 23530., 24978., 6605.,  7233.,  7877.,
      8537.,  8677.,  9337.,  10013., 10705., 17762., 19114., 20498., 21914.,
      9213.,  9905.,  10613., 11337., 11413., 12137., 12877., 13633., 12821.,
      13545., 14285., 15041., 14893., 15649., 16421., 17209., 30578., 32122.,
      33698., 35306., 15813., 16601., 17405., 18225., 18013., 18833., 19669.,
      20521., 0.,     0.,     0.,     0.,     0.,     0.,     0.,     0.,
      0.,     0.,     0.,     0.,     0.,     0.,     0.,     0.,     0.,
      0.,     0.,     0.};
  const std::array<int, 4> in_shape = {{3, 8, 5, 4}};
  const int multiplier = 2;
  const auto padding = sycldnn::PaddingMode::VALID;
  const DataType max_input_val = 2048.0;
  this->run_input_backprop_test(exp_out, in_shape, multiplier, padding,
                                max_input_val);
}
TYPED_TEST(InputBackpropWindow3Stride2, SAME3x8x5x4x4) {
  using DataType = typename TestFixture::DataType;
  const std::vector<DataType> exp_out = {
      190.,    590.,    1118.,   1774.,   540.,    1596.,   2908.,   4476.,
      1374.,   2030.,   2814.,   3726.,   2908.,   4476.,   6300.,   8380.,
      2558.,   3470.,   4510.,   5678.,   670.,    1838.,   3134.,   4558.,
      4572.,   7164.,   10012.,  13116.,  4926.,   6350.,   7902.,   9582.,
      13084.,  16188.,  19548.,  23164.,  9182.,   10862.,  12670.,  14606.,
      4892.,   7996.,   11356.,  14972.,  16248.,  22968.,  30200.,  37944.,
      13404.,  17020.,  20892.,  25020.,  33272.,  41016.,  49272.,  58040.,
      21916.,  26044.,  30428.,  35068.,  13438.,  15374.,  17438.,  19630.,
      30108.,  34236.,  38620.,  43260.,  17694.,  19886.,  22206.,  24654.,
      38620.,  43260.,  48156.,  53308.,  21950.,  24398.,  26974.,  29678.,
      30428.,  35068.,  39964.,  45116.,  67320.,  77112.,  87416.,  98232.,
      38940.,  44092.,  49500.,  55164.,  84344.,  95160.,  106488., 118328.,
      47452.,  53116.,  59036.,  65212.,  26206.,  28910.,  31742.,  34702.,
      55644.,  61308.,  67228.,  73404.,  30462.,  33422.,  36510.,  39726.,
      64156.,  70332.,  76764.,  83452.,  34718.,  37934.,  41278.,  44750.,
      55964.,  62140.,  68572.,  75260.,  118392., 131256., 144632., 158520.,
      64476.,  71164.,  78108.,  85308.,  135416., 149304., 163704., 178616.,
      72988.,  80188.,  87644.,  95356.,  38974.,  42446.,  46046.,  49774.,
      81180.,  88380.,  95836.,  103548., 43230.,  46958.,  50814.,  54798.,
      89692.,  97404.,  105372., 113596., 47486.,  51470.,  55582.,  59822.,
      14398.,  17870.,  21470.,  25198.,  28956.,  36156.,  43612.,  51324.,
      15582.,  19310.,  23166.,  27150.,  31324.,  39036.,  47004.,  55228.,
      16766.,  20750.,  24862.,  29102.,  51742.,  55982.,  60350.,  64846.,
      106716., 115452., 124444., 133692., 55998.,  60494.,  65118.,  69870.,
      115228., 124476., 133980., 143740., 60254.,  65006.,  69886.,  74894.,
      107036., 116284., 125788., 135548., 220536., 239544., 259064., 279096.,
      115548., 125308., 135324., 145596., 237560., 257592., 278136., 299192.,
      124060., 134332., 144860., 155644., 64510.,  69518.,  74654.,  79918.,
      132252., 142524., 153052., 163836., 68766.,  74030.,  79422.,  84942.,
      140764., 151548., 162588., 173884., 73022.,  78542.,  84190.,  89966.,
      132572., 143356., 154396., 165692., 271608., 293688., 316280., 339384.,
      141084., 152380., 163932., 175740., 288632., 311736., 335352., 359480.,
      149596., 161404., 173468., 185788., 77278.,  83054.,  88958.,  94990.,
      157788., 169596., 181660., 193980., 81534.,  87566.,  93726.,  100014.,
      166300., 178620., 191196., 204028., 85790.,  92078.,  98494.,  105038.,
      158108., 170428., 183004., 195836., 322680., 347832., 373496., 399672.,
      166620., 179452., 192540., 205884., 339704., 365880., 392568., 419768.,
      175132., 188476., 202076., 215932., 90046.,  96590.,  103262., 110062.,
      183324., 196668., 210268., 224124., 94302.,  101102., 108030., 115086.,
      191836., 205692., 219804., 234172., 98558.,  105614., 112798., 120110.,
      28606.,  35150.,  41822.,  48622.,  57372.,  70716.,  84316.,  98172.,
      29790.,  36590.,  43518.,  50574.,  59740.,  73596.,  87708.,  102076.,
      30974.,  38030.,  45214.,  52526.,  102814., 110126., 117566., 125134.,
      208860., 223740., 238876., 254268., 107070., 114638., 122334., 130158.,
      217372., 232764., 248412., 264316., 111326., 119150., 127102., 135182.,
      209180., 224572., 240220., 256124., 424824., 456120., 487928., 520248.,
      217692., 233596., 249756., 266172., 441848., 474168., 507000., 540344.,
      226204., 242620., 259292., 276220., 115582., 123662., 131870., 140206.,
      234396., 250812., 267484., 284412., 119838., 128174., 136638., 145230.,
      242908., 259836., 277020., 294460., 124094., 132686., 141406., 150254.,
      234716., 251644., 268828., 286268., 475896., 510264., 545144., 580536.,
      243228., 260668., 278364., 296316., 492920., 528312., 564216., 600632.,
      251740., 269692., 287900., 306364., 128350., 137198., 146174., 155278.,
      259932., 277884., 296092., 314556., 132606., 141710., 150942., 160302.,
      268444., 286908., 305628., 324604., 136862., 146222., 155710., 165326.,
      260252., 278716., 297436., 316412., 526968., 564408., 602360., 640824.,
      268764., 287740., 306972., 326460., 543992., 582456., 621432., 660920.,
      277276., 296764., 316508., 336508., 141118., 150734., 160478., 170350.,
      285468., 304956., 324700., 344700., 145374., 155246., 165246., 175374.,
      293980., 313980., 334236., 354748., 149630., 159758., 170014., 180398.};
  const std::array<int, 4> in_shape = {{3, 8, 5, 4}};
  const int multiplier = 4;
  const auto padding = sycldnn::PaddingMode::SAME;
  const DataType max_input_val = 2048.0;
  this->run_input_backprop_test(exp_out, in_shape, multiplier, padding,
                                max_input_val);
}
TYPED_TEST(InputBackpropWindow3Stride2, VALID3x8x5x4x4) {
  using DataType = typename TestFixture::DataType;
  const std::vector<DataType> exp_out = {
      30.,     174.,    446.,    846.,    190.,    590.,    1118.,   1774.,
      540.,    1596.,   2908.,   4476.,   1374.,   2030.,   2814.,   3726.,
      2558.,   3470.,   4510.,   5678.,   510.,    1422.,   2462.,   3630.,
      670.,    1838.,   3134.,   4558.,   4572.,   7164.,   10012.,  13116.,
      4926.,   6350.,   7902.,   9582.,   6110.,   7790.,   9598.,   11534.,
      1340.,   3676.,   6268.,   9116.,   3708.,   6556.,   9660.,   13020.,
      13880.,  20088.,  26808.,  34040.,  12220.,  15580.,  19196.,  23068.,
      16636.,  20508.,  24636.,  29020.,  6974.,   8398.,   9950.,   11630.,
      9182.,   10862.,  12670.,  14606.,  21596.,  25212.,  29084.,  33212.,
      13438.,  15374.,  17438.,  19630.,  16670.,  18862.,  21182.,  23630.,
      14268.,  17628.,  21244.,  25116.,  20732.,  24604.,  28732.,  33116.,
      47928.,  56184.,  64952.,  74232.,  29244.,  33628.,  38268.,  43164.,
      37756.,  42652.,  47804.,  53212.,  13438.,  15374.,  17438.,  19630.,
      17694.,  19886.,  22206.,  24654.,  38620.,  43260.,  48156.,  53308.,
      21950.,  24398.,  26974.,  29678.,  27230.,  29934.,  32766.,  35726.,
      26206.,  28910.,  31742.,  34702.,  30462.,  33422.,  36510.,  39726.,
      67228.,  73404.,  79836.,  86524.,  37790.,  41006.,  44350.,  47822.,
      43070.,  46542.,  50142.,  53870.,  0.,      0.,      0.,      0.,
      0.,      0.,      0.,      0.,      0.,      0.,      0.,      0.,
      0.,      0.,      0.,      0.,      0.,      0.,      0.,      0.,
      990.,    2670.,   4478.,   6414.,   7294.,   9230.,   11294.,  13486.,
      14748.,  18876.,  23260.,  27900.,  8478.,   10670.,  12990.,  15438.,
      15806.,  18254.,  20830.,  23534.,  19902.,  22350.,  24926.,  27630.,
      26206.,  28910.,  31742.,  34702.,  55644.,  61308.,  67228.,  73404.,
      30462.,  33422.,  36510.,  39726.,  37790.,  41006.,  44350.,  47822.,
      40124.,  45532.,  51196.,  57116.,  54780.,  60700.,  66876.,  73308.,
      116024., 128376., 141240., 154616., 63292.,  69724.,  76412.,  83356.,
      79996.,  86940.,  94140.,  101596., 26366.,  29326.,  32414.,  35630.,
      34718.,  37934.,  41278.,  44750.,  72668.,  79356.,  86300.,  93500.,
      38974.,  42446.,  46046.,  49774.,  48350.,  52078.,  55934.,  59918.,
      53052.,  59484.,  66172.,  73116.,  71804.,  78748.,  85948.,  93404.,
      150072., 164472., 179384., 194808., 80316.,  87772.,  95484.,  103452.,
      101116., 109084., 117308., 125788., 32830.,  36302.,  39902.,  43630.,
      43230.,  46958.,  50814.,  54798.,  89692.,  97404.,  105372., 113596.,
      47486.,  51470.,  55582.,  59822.,  58910.,  63150.,  67518.,  72014.,
      64030.,  68270.,  72638.,  77134.,  74430.,  78926.,  83550.,  88302.,
      155164., 164412., 173916., 183676., 81758.,  86510.,  91390.,  96398.,
      93182.,  98190.,  103326., 108590., 0.,      0.,      0.,      0.,
      0.,      0.,      0.,      0.,      0.,      0.,      0.,      0.,
      0.,      0.,      0.,      0.,      0.,      0.,      0.,      0.,
      1950.,   5166.,   8510.,   11982.,  14398.,  17870.,  21470.,  25198.,
      28956.,  36156.,  43612.,  51324.,  15582.,  19310.,  23166.,  27150.,
      29054.,  33038.,  37150.,  41390.,  39294.,  43278.,  47390.,  51630.,
      51742.,  55982.,  60350.,  64846.,  106716., 115452., 124444., 133692.,
      55998.,  60494.,  65118.,  69870.,  69470.,  74222.,  79102.,  84110.,
      78908.,  87388.,  96124.,  105116., 105852., 114844., 124092., 133596.,
      218168., 236664., 255672., 275192., 114364., 123868., 133628., 143644.,
      143356., 153372., 163644., 174172., 45758.,  50254.,  54878.,  59630.,
      60254.,  65006.,  69886.,  74894.,  123740., 133500., 143516., 153788.,
      64510.,  69518.,  74654.,  79918.,  80030.,  85294.,  90686.,  96206.,
      91836.,  101340., 111100., 121116., 122876., 132892., 143164., 153692.,
      252216., 272760., 293816., 315384., 131388., 141916., 152700., 163740.,
      164476., 175516., 186812., 198364., 52222.,  57230.,  62366.,  67630.,
      68766.,  74030.,  79422.,  84942.,  140764., 151548., 162588., 173884.,
      73022.,  78542.,  84190.,  89966.,  90590.,  96366.,  102270., 108302.,
      101854., 107630., 113534., 119566., 118398., 124430., 130590., 136878.,
      243100., 255420., 267996., 280828., 125726., 132014., 138430., 144974.,
      143294., 149838., 156510., 163310., 0.,      0.,      0.,      0.,
      0.,      0.,      0.,      0.,      0.,      0.,      0.,      0.,
      0.,      0.,      0.,      0.,      0.,      0.,      0.,      0.};
  const std::array<int, 4> in_shape = {{3, 8, 5, 4}};
  const int multiplier = 4;
  const auto padding = sycldnn::PaddingMode::VALID;
  const DataType max_input_val = 2048.0;
  this->run_input_backprop_test(exp_out, in_shape, multiplier, padding,
                                max_input_val);
}
TYPED_TEST(InputBackpropWindow3Stride2, SAME3x8x6x1x1) {
  using DataType = typename TestFixture::DataType;
  const std::vector<DataType> exp_out = {
      1.,   2.,   5.,   4.,   9.,   6.,   4.,   5.,   14.,  10.,  24.,  15.,
      11.,  16.,  40.,  26.,  60.,  36.,  16.,  20.,  44.,  25.,  54.,  30.,
      35.,  46.,  100., 56.,  120., 66.,  28.,  35.,  74.,  40.,  84.,  45.,
      59.,  76.,  160., 86.,  180., 96.,  40.,  50.,  104., 55.,  114., 60.,
      13.,  26.,  53.,  28.,  57.,  30.,  52.,  65.,  134., 70.,  144., 75.,
      107., 136., 280., 146., 300., 156., 64.,  80.,  164., 85.,  174., 90.,
      131., 166., 340., 176., 360., 186., 76.,  95.,  194., 100., 204., 105.,
      155., 196., 400., 206., 420., 216., 88.,  110., 224., 115., 234., 120.,
      25.,  50.,  101., 52.,  105., 54.,  100., 125., 254., 130., 264., 135.,
      203., 256., 520., 266., 540., 276., 112., 140., 284., 145., 294., 150.,
      227., 286., 580., 296., 600., 306., 124., 155., 314., 160., 324., 165.,
      251., 316., 640., 326., 660., 336., 136., 170., 344., 175., 354., 180.};
  const std::array<int, 4> in_shape = {{3, 8, 6, 1}};
  const int multiplier = 1;
  const auto padding = sycldnn::PaddingMode::SAME;
  const DataType max_input_val = 2048.0;
  this->run_input_backprop_test(exp_out, in_shape, multiplier, padding,
                                max_input_val);
}
TYPED_TEST(InputBackpropWindow3Stride2, VALID3x8x6x1x1) {
  using DataType = typename TestFixture::DataType;
  const std::vector<DataType> exp_out = {
      1.,   2.,   5.,   4.,   6.,   0., 4.,  5.,  14.,  10., 12.,  0.,
      10.,  14.,  36.,  24.,  30.,  0., 12., 15., 34.,  20., 24.,  0.,
      26.,  34.,  76.,  44.,  54.,  0., 20., 25., 54.,  30., 36.,  0.,
      35.,  40.,  87.,  48.,  54.,  0., 0.,  0.,  0.,   0.,  0.,   0.,
      7.,   14.,  29.,  16.,  24.,  0., 28., 35., 74.,  40., 48.,  0.,
      58.,  74.,  156., 84.,  102., 0., 36., 45., 94.,  50., 60.,  0.,
      74.,  94.,  196., 104., 126., 0., 44., 55., 114., 60., 72.,  0.,
      77.,  88.,  183., 96.,  108., 0., 0.,  0.,  0.,   0.,  0.,   0.,
      13.,  26.,  53.,  28.,  42.,  0., 52., 65., 134., 70., 84.,  0.,
      106., 134., 276., 144., 174., 0., 60., 75., 154., 80., 96.,  0.,
      122., 154., 316., 164., 198., 0., 68., 85., 174., 90., 108., 0.,
      119., 136., 279., 144., 162., 0., 0.,  0.,  0.,   0.,  0.,   0.};
  const std::array<int, 4> in_shape = {{3, 8, 6, 1}};
  const int multiplier = 1;
  const auto padding = sycldnn::PaddingMode::VALID;
  const DataType max_input_val = 2048.0;
  this->run_input_backprop_test(exp_out, in_shape, multiplier, padding,
                                max_input_val);
}
TYPED_TEST(InputBackpropWindow3Stride2, SAME3x8x6x1x2) {
  using DataType = typename TestFixture::DataType;
  const std::vector<DataType> exp_out = {
      5.,    11.,   28.,   25.,   56.,   39.,   23.,   29.,   88.,   67.,
      164.,  105.,  64.,   100.,  260.,  176.,  412.,  252.,  113.,  143.,
      316.,  181.,  392.,  219.,  244.,  328.,  716.,  404.,  868.,  480.,
      203.,  257.,  544.,  295.,  620.,  333.,  424.,  556.,  1172., 632.,
      1324., 708.,  293.,  371.,  772.,  409.,  848.,  447.,  77.,   179.,
      364.,  193.,  392.,  207.,  383.,  485.,  1000., 523.,  1076., 561.,
      784.,  1012., 2084., 1088., 2236., 1164., 473.,  599.,  1228., 637.,
      1304., 675.,  964.,  1240., 2540., 1316., 2692., 1392., 563.,  713.,
      1456., 751.,  1532., 789.,  1144., 1468., 2996., 1544., 3148., 1620.,
      653.,  827.,  1684., 865.,  1760., 903.,  149.,  347.,  700.,  361.,
      728.,  375.,  743.,  941.,  1912., 979.,  1988., 1017., 1504., 1924.,
      3908., 2000., 4060., 2076., 833.,  1055., 2140., 1093., 2216., 1131.,
      1684., 2152., 4364., 2228., 4516., 2304., 923.,  1169., 2368., 1207.,
      2444., 1245., 1864., 2380., 4820., 2456., 4972., 2532., 1013., 1283.,
      2596., 1321., 2672., 1359.};
  const std::array<int, 4> in_shape = {{3, 8, 6, 1}};
  const int multiplier = 2;
  const auto padding = sycldnn::PaddingMode::SAME;
  const DataType max_input_val = 2048.0;
  this->run_input_backprop_test(exp_out, in_shape, multiplier, padding,
                                max_input_val);
}
TYPED_TEST(InputBackpropWindow3Stride2, VALID3x8x6x1x2) {
  using DataType = typename TestFixture::DataType;
  const std::vector<DataType> exp_out = {
      5.,   11.,   28.,   25.,   39.,   0., 23.,  29.,  88.,   67.,  81.,  0.,
      58.,  86.,   232.,  162.,  206.,  0., 83.,  105., 240.,  143., 173., 0.,
      178., 238.,  536.,  314.,  390.,  0., 143., 181., 392.,  219., 265., 0.,
      257., 295.,  644.,  357.,  403.,  0., 0.,   0.,   0.,    0.,   0.,   0.,
      41.,  95.,   196.,  109.,  171.,  0., 203., 257., 544.,  295., 357., 0.,
      418., 542.,  1144., 618.,  758.,  0., 263., 333., 696.,  371., 449., 0.,
      538., 694.,  1448., 770.,  942.,  0., 323., 409., 848.,  447., 541., 0.,
      581., 667.,  1388., 729.,  823.,  0., 0.,   0.,   0.,    0.,   0.,   0.,
      77.,  179.,  364.,  193.,  303.,  0., 383., 485., 1000., 523., 633., 0.,
      778., 998.,  2056., 1074., 1310., 0., 443., 561., 1152., 599., 725., 0.,
      898., 1150., 2360., 1226., 1494., 0., 503., 637., 1304., 675., 817., 0.,
      905., 1039., 2132., 1101., 1243., 0., 0.,   0.,   0.,    0.,   0.,   0.};
  const std::array<int, 4> in_shape = {{3, 8, 6, 1}};
  const int multiplier = 2;
  const auto padding = sycldnn::PaddingMode::VALID;
  const DataType max_input_val = 2048.0;
  this->run_input_backprop_test(exp_out, in_shape, multiplier, padding,
                                max_input_val);
}
TYPED_TEST(InputBackpropWindow3Stride2, SAME3x8x6x1x4) {
  using DataType = typename TestFixture::DataType;
  const std::vector<DataType> exp_out = {
      30.,    70.,    180.,   174.,   388.,   278.,   150.,   190.,   612.,
      486.,   1204.,  782.,   420.,   692.,   1848.,  1284.,  3032.,  1876.,
      846.,   1078.,  2388.,  1374.,  2980.,  1670.,  1812.,  2468.,  5400.,
      3060.,  6584.,  3652.,  1542.,  1966.,  4164.,  2262.,  4756.,  2558.,
      3204.,  4244.,  8952.,  4836.,  10136., 5428.,  2238.,  2854.,  5940.,
      3150.,  6532.,  3446.,  510.,   1318.,  2676.,  1422.,  2884.,  1526.,
      2934.,  3742.,  7716.,  4038.,  8308.,  4334.,  5988.,  7796.,  16056.,
      8388.,  17240., 8980.,  3630.,  4630.,  9492.,  4926.,  10084., 5222.,
      7380.,  9572.,  19608., 10164., 20792., 10756., 4326.,  5518.,  11268.,
      5814.,  11860., 6110.,  8772.,  11348., 23160., 11940., 24344., 12532.,
      5022.,  6406.,  13044., 6702.,  13636., 6998.,  990.,   2566.,  5172.,
      2670.,  5380.,  2774.,  5718.,  7294.,  14820., 7590.,  15412., 7886.,
      11556., 14900., 30264., 15492., 31448., 16084., 6414.,  8182.,  16596.,
      8478.,  17188., 8774.,  12948., 16676., 33816., 17268., 35000., 17860.,
      7110.,  9070.,  18372., 9366.,  18964., 9662.,  14340., 18452., 37368.,
      19044., 38552., 19636., 7806.,  9958.,  20148., 10254., 20740., 10550.};
  const std::array<int, 4> in_shape = {{3, 8, 6, 1}};
  const int multiplier = 4;
  const auto padding = sycldnn::PaddingMode::SAME;
  const DataType max_input_val = 2048.0;
  this->run_input_backprop_test(exp_out, in_shape, multiplier, padding,
                                max_input_val);
}
TYPED_TEST(InputBackpropWindow3Stride2, VALID3x8x6x1x4) {
  using DataType = typename TestFixture::DataType;
  const std::vector<DataType> exp_out = {
      30.,    70.,   180.,   174.,  278.,   0.,    150.,   190.,  612.,   486.,
      590.,   0.,    380.,   588.,  1640.,  1180., 1516.,  0.,    614.,   782.,
      1796.,  1078., 1310.,  0.,    1308.,  1772., 4008.,  2364., 2956.,  0.,
      1078.,  1374., 2980.,  1670., 2030.,  0.,    1966.,  2262., 4948.,  2750.,
      3110.,  0.,    0.,     0.,    0.,     0.,    0.,     0.,    270.,   694.,
      1428.,  798.,  1286.,  0.,    1542.,  1966., 4164.,  2262., 2750.,  0.,
      3164.,  4140., 8744.,  4732., 5836.,  0.,    2006.,  2558., 5348.,  2854.,
      3470.,  0.,    4092.,  5324., 11112., 5916., 7276.,  0.,    2470.,  3150.,
      6532.,  3446., 4190.,  0.,    4510.,  5190., 10804., 5678., 6422.,  0.,
      0.,     0.,    0.,     0.,    0.,     0.,    510.,   1318., 2676.,  1422.,
      2294.,  0.,    2934.,  3742., 7716.,  4038., 4910.,  0.,    5948.,  7692.,
      15848., 8284., 10156., 0.,    3398.,  4334., 8900.,  4630., 5630.,  0.,
      6876.,  8876., 18216., 9468., 11596., 0.,    3862.,  4926., 10084., 5222.,
      6350.,  0.,    7054.,  8118., 16660., 8606., 9734.,  0.,    0.,     0.,
      0.,     0.,    0.,     0.};
  const std::array<int, 4> in_shape = {{3, 8, 6, 1}};
  const int multiplier = 4;
  const auto padding = sycldnn::PaddingMode::VALID;
  const DataType max_input_val = 2048.0;
  this->run_input_backprop_test(exp_out, in_shape, multiplier, padding,
                                max_input_val);
}
TYPED_TEST(InputBackpropWindow3Stride2, SAME3x8x6x2x1) {
  using DataType = typename TestFixture::DataType;
  const std::vector<DataType> exp_out = {
      1.,    4.,    3.,    8.,    8.,    20.,   9.,    16.,   20.,   36.,
      15.,   24.,   7.,    16.,   9.,    20.,   32.,   56.,   27.,   40.,
      68.,   96.,   45.,   60.,   20.,   44.,   36.,   64.,   100.,  160.,
      72.,   104.,  172.,  240.,  108.,  144.,  49.,   64.,   63.,   80.,
      140.,  176.,  81.,   100.,  176.,  216.,  99.,   120.,  104.,  140.,
      144.,  184.,  316.,  400.,  180.,  224.,  388.,  480.,  216.,  264.,
      91.,   112.,  117.,  140.,  248.,  296.,  135.,  160.,  284.,  336.,
      153.,  180.,  188.,  236.,  252.,  304.,  532.,  640.,  288.,  344.,
      604.,  720.,  324.,  384.,  133.,  160.,  171.,  200.,  356.,  416.,
      189.,  220.,  392.,  456.,  207.,  240.,  25.,   52.,   75.,   104.,
      152.,  212.,  81.,   112.,  164.,  228.,  87.,   120.,  175.,  208.,
      225.,  260.,  464.,  536.,  243.,  280.,  500.,  576.,  261.,  300.,
      356.,  428.,  468.,  544.,  964.,  1120., 504.,  584.,  1036., 1200.,
      540.,  624.,  217.,  256.,  279.,  320.,  572.,  656.,  297.,  340.,
      608.,  696.,  315.,  360.,  440.,  524.,  576.,  664.,  1180., 1360.,
      612.,  704.,  1252., 1440., 648.,  744.,  259.,  304.,  333.,  380.,
      680.,  776.,  351.,  400.,  716.,  816.,  369.,  420.,  524.,  620.,
      684.,  784.,  1396., 1600., 720.,  824.,  1468., 1680., 756.,  864.,
      301.,  352.,  387.,  440.,  788.,  896.,  405.,  460.,  824.,  936.,
      423.,  480.,  49.,   100.,  147.,  200.,  296.,  404.,  153.,  208.,
      308.,  420.,  159.,  216.,  343.,  400.,  441.,  500.,  896.,  1016.,
      459.,  520.,  932.,  1056., 477.,  540.,  692.,  812.,  900.,  1024.,
      1828., 2080., 936.,  1064., 1900., 2160., 972.,  1104., 385.,  448.,
      495.,  560.,  1004., 1136., 513.,  580.,  1040., 1176., 531.,  600.,
      776.,  908.,  1008., 1144., 2044., 2320., 1044., 1184., 2116., 2400.,
      1080., 1224., 427.,  496.,  549.,  620.,  1112., 1256., 567.,  640.,
      1148., 1296., 585.,  660.,  860.,  1004., 1116., 1264., 2260., 2560.,
      1152., 1304., 2332., 2640., 1188., 1344., 469.,  544.,  603.,  680.,
      1220., 1376., 621.,  700.,  1256., 1416., 639.,  720.};
  const std::array<int, 4> in_shape = {{3, 8, 6, 2}};
  const int multiplier = 1;
  const auto padding = sycldnn::PaddingMode::SAME;
  const DataType max_input_val = 2048.0;
  this->run_input_backprop_test(exp_out, in_shape, multiplier, padding,
                                max_input_val);
}
TYPED_TEST(InputBackpropWindow3Stride2, VALID3x8x6x2x1) {
  using DataType = typename TestFixture::DataType;
  const std::vector<DataType> exp_out = {
      1.,   4.,   3.,   8.,   8.,    20.,   9.,   16.,  15.,  24.,  0., 0.,
      7.,   16.,  9.,   20.,  32.,   56.,   27.,  40.,  33.,  48.,  0., 0.,
      18.,  40.,  30.,  56.,  88.,   144.,  66.,  96.,  86.,  120., 0., 0.,
      35.,  48.,  45.,  60.,  104.,  136.,  63.,  80.,  77.,  96.,  0., 0.,
      74.,  104., 102., 136., 232.,  304.,  138., 176., 174., 216., 0., 0.,
      63.,  80.,  81.,  100., 176.,  216.,  99.,  120., 121., 144., 0., 0.,
      117., 140., 135., 160., 296.,  348.,  165., 192., 187., 216., 0., 0.,
      0.,   0.,   0.,   0.,   0.,    0.,    0.,   0.,   0.,   0.,   0., 0.,
      13.,  28.,  39.,  56.,  80.,   116.,  45.,  64.,  75.,  96.,  0., 0.,
      91.,  112., 117., 140., 248.,  296.,  135., 160., 165., 192., 0., 0.,
      186., 232., 246., 296., 520.,  624.,  282., 336., 350., 408., 0., 0.,
      119., 144., 153., 180., 320.,  376.,  171., 200., 209., 240., 0., 0.,
      242., 296., 318., 376., 664.,  784.,  354., 416., 438., 504., 0., 0.,
      147., 176., 189., 220., 392.,  456.,  207., 240., 253., 288., 0., 0.,
      273., 308., 315., 352., 656.,  732.,  345., 384., 391., 432., 0., 0.,
      0.,   0.,   0.,   0.,   0.,    0.,    0.,   0.,   0.,   0.,   0., 0.,
      25.,  52.,  75.,  104., 152.,  212.,  81.,  112., 135., 168., 0., 0.,
      175., 208., 225., 260., 464.,  536.,  243., 280., 297., 336., 0., 0.,
      354., 424., 462., 536., 952.,  1104., 498., 576., 614., 696., 0., 0.,
      203., 240., 261., 300., 536.,  616.,  279., 320., 341., 384., 0., 0.,
      410., 488., 534., 616., 1096., 1264., 570., 656., 702., 792., 0., 0.,
      231., 272., 297., 340., 608.,  696.,  315., 360., 385., 432., 0., 0.,
      429., 476., 495., 544., 1016., 1116., 525., 576., 595., 648., 0., 0.,
      0.,   0.,   0.,   0.,   0.,    0.,    0.,   0.,   0.,   0.,   0., 0.};
  const std::array<int, 4> in_shape = {{3, 8, 6, 2}};
  const int multiplier = 1;
  const auto padding = sycldnn::PaddingMode::VALID;
  const DataType max_input_val = 2048.0;
  this->run_input_backprop_test(exp_out, in_shape, multiplier, padding,
                                max_input_val);
}
TYPED_TEST(InputBackpropWindow3Stride2, SAME3x8x6x2x2) {
  using DataType = typename TestFixture::DataType;
  const std::vector<DataType> exp_out = {
      5.,     25.,    17.,    53.,    46.,    134.,   61.,    113.,   134.,
      254.,   105.,   173.,   41.,    109.,   53.,    137.,   214.,   398.,
      193.,   293.,   494.,   710.,   333.,   449.,   118.,   302.,   238.,
      454.,   692.,   1156.,  518.,   766.,   1252.,  1780.,  798.,   1078.,
      365.,   481.,   473.,   605.,   1054.,  1334.,  613.,   761.,   1334.,
      1646.,  753.,   917.,   766.,   1046.,  1078.,  1390.,  2372.,  3028.,
      1358.,  1702.,  2932.,  3652.,  1638.,  2014.,  689.,   853.,   893.,
      1073.,  1894.,  2270.,  1033.,  1229.,  2174.,  2582.,  1173.,  1385.,
      1414.,  1790.,  1918.,  2326.,  4052.,  4900.,  2198.,  2638.,  4612.,
      5524.,  2478.,  2950.,  1013.,  1225.,  1313.,  1541.,  2734.,  3206.,
      1453.,  1697.,  3014.,  3518.,  1593.,  1853.,  149.,   361.,   545.,
      773.,   1102.,  1574.,  589.,   833.,   1190.,  1694.,  633.,   893.,
      1337.,  1597.,  1733.,  2009.,  3574.,  4142.,  1873.,  2165.,  3854.,
      4454.,  2013.,  2321.,  2710.,  3278.,  3598.,  4198.,  7412.,  8644.,
      3878.,  4510.,  7972.,  9268.,  4158.,  4822.,  1661.,  1969.,  2153.,
      2477.,  4414.,  5078.,  2293.,  2633.,  4694.,  5390.,  2433.,  2789.,
      3358.,  4022.,  4438.,  5134.,  9092.,  10516., 4718.,  5446.,  9652.,
      11140., 4998.,  5758.,  1985.,  2341.,  2573.,  2945.,  5254.,  6014.,
      2713.,  3101.,  5534.,  6326.,  2853.,  3257.,  4006.,  4766.,  5278.,
      6070.,  10772., 12388., 5558.,  6382.,  11332., 13012., 5838.,  6694.,
      2309.,  2713.,  2993.,  3413.,  6094.,  6950.,  3133.,  3569.,  6374.,
      7262.,  3273.,  3725.,  293.,   697.,   1073.,  1493.,  2158.,  3014.,
      1117.,  1553.,  2246.,  3134.,  1161.,  1613.,  2633.,  3085.,  3413.,
      3881.,  6934.,  7886.,  3553.,  4037.,  7214.,  8198.,  3693.,  4193.,
      5302.,  6254.,  6958.,  7942.,  14132., 16132., 7238.,  8254.,  14692.,
      16756., 7518.,  8566.,  2957.,  3457.,  3833.,  4349.,  7774.,  8822.,
      3973.,  4505.,  8054.,  9134.,  4113.,  4661.,  5950.,  6998.,  7798.,
      8878.,  15812., 18004., 8078.,  9190.,  16372., 18628., 8358.,  9502.,
      3281.,  3829.,  4253.,  4817.,  8614.,  9758.,  4393.,  4973.,  8894.,
      10070., 4533.,  5129.,  6598.,  7742.,  8638.,  9814.,  17492., 19876.,
      8918.,  10126., 18052., 20500., 9198.,  10438., 3605.,  4201.,  4673.,
      5285.,  9454.,  10694., 4813.,  5441.,  9734.,  11006., 4953.,  5597.};
  const std::array<int, 4> in_shape = {{3, 8, 6, 2}};
  const int multiplier = 2;
  const auto padding = sycldnn::PaddingMode::SAME;
  const DataType max_input_val = 2048.0;
  this->run_input_backprop_test(exp_out, in_shape, multiplier, padding,
                                max_input_val);
}
TYPED_TEST(InputBackpropWindow3Stride2, VALID3x8x6x2x2) {
  using DataType = typename TestFixture::DataType;
  const std::vector<DataType> exp_out = {
      5.,    25.,   17.,   53.,   46.,   134.,  61.,   113.,  105.,  173.,
      0.,    0.,    41.,   109.,  53.,   137.,  214.,  398.,  193.,  293.,
      237.,  353.,  0.,    0.,    106.,  274.,  194.,  394.,  604.,  1036.,
      474.,  706.,  626.,  890.,  0.,    0.,    257.,  357.,  333.,  449.,
      774.,  1022., 473.,  605.,  581.,  729.,  0.,    0.,    538.,  770.,
      754.,  1018., 1724., 2284., 1034., 1330., 1314., 1642., 0.,    0.,
      473.,  605.,  613.,  761.,  1334., 1646., 753.,  917.,  925.,  1105.,
      0.,    0.,    893.,  1073., 1033., 1229., 2270., 2678., 1269., 1481.,
      1441., 1669., 0.,    0.,    0.,    0.,    0.,    0.,    0.,    0.,
      0.,    0.,    0.,    0.,    0.,    0.,    77.,   193.,  281.,  413.,
      574.,  854.,  325.,  473.,  561.,  725.,  0.,    0.,    689.,  853.,
      893.,  1073., 1894., 2270., 1033., 1229., 1269., 1481., 0.,    0.,
      1402., 1762., 1874., 2266., 3964., 4780., 2154., 2578., 2690., 3146.,
      0.,    0.,    905.,  1101., 1173., 1385., 2454., 2894., 1313., 1541.,
      1613., 1857., 0.,    0.,    1834., 2258., 2434., 2890., 5084., 6028.,
      2714., 3202., 3378., 3898., 0.,    0.,    1121., 1349., 1453., 1697.,
      3014., 3518., 1593., 1853., 1957., 2233., 0.,    0.,    2117., 2393.,
      2449., 2741., 5102., 5702., 2685., 2993., 3049., 3373., 0.,    0.,
      0.,    0.,    0.,    0.,    0.,    0.,    0.,    0.,    0.,    0.,
      0.,    0.,    149.,  361.,  545.,  773.,  1102., 1574., 589.,  833.,
      1017., 1277., 0.,    0.,    1337., 1597., 1733., 2009., 3574., 4142.,
      1873., 2165., 2301., 2609., 0.,    0.,    2698., 3250., 3554., 4138.,
      7324., 8524., 3834., 4450., 4754., 5402., 0.,    0.,    1553., 1845.,
      2013., 2321., 4134., 4766., 2153., 2477., 2645., 2985., 0.,    0.,
      3130., 3746., 4114., 4762., 8444., 9772., 4394., 5074., 5442., 6154.,
      0.,    0.,    1769., 2093., 2293., 2633., 4694., 5390., 2433., 2789.,
      2989., 3361., 0.,    0.,    3341., 3713., 3865., 4253., 7934., 8726.,
      4101., 4505., 4657., 5077., 0.,    0.,    0.,    0.,    0.,    0.,
      0.,    0.,    0.,    0.,    0.,    0.,    0.,    0.};
  const std::array<int, 4> in_shape = {{3, 8, 6, 2}};
  const int multiplier = 2;
  const auto padding = sycldnn::PaddingMode::VALID;
  const DataType max_input_val = 2048.0;
  this->run_input_backprop_test(exp_out, in_shape, multiplier, padding,
                                max_input_val);
}
TYPED_TEST(InputBackpropWindow3Stride2, SAME3x8x6x2x4) {
  using DataType = typename TestFixture::DataType;
  const std::vector<DataType> exp_out = {
      30.,     174.,    110.,   382.,   300.,    972.,    446.,   846.,
      972.,    1900.,   782.,   1310.,  270.,    798.,    350.,   1006.,
      1548.,   2988.,   1454.,  2238.,  3756.,   5452.,   2558.,  3470.,
      780.,    2220.,   1708.,  3404.,  5112.,   8760.,   3916.,  5868.,
      9528.,   13688.,  6124.,  8332.,  2814.,   3726.,   3662.,  4702.,
      8172.,   10380.,  4766.,  5934.,  10380.,  12844.,  5870.,  7166.,
      5868.,   8076.,   8332.,  10796., 18360.,  23544.,  10540., 13260.,
      22776.,  28472.,  12748., 15724., 5358.,   6654.,   6974.,  8398.,
      14796.,  17772.,  8078.,  9630.,  17004.,  20236.,  9182.,  10862.,
      10956.,  13932.,  14956., 18188., 31608.,  38328.,  17164., 20652.,
      36024.,  43256.,  19372., 23116., 7902.,   9582.,   10286., 12094.,
      21420.,  25164.,  11390., 13326., 23628.,  27628.,  12494., 14558.,
      990.,    2670.,   4142.,  5950.,  8364.,   12108.,  4478.,  6414.,
      9036.,   13036.,  4814.,  6878.,  10446.,  12510.,  13598., 15790.,
      28044.,  32556.,  14702., 17022., 30252.,  35020.,  15806., 18254.,
      21132.,  25644.,  28204., 32972., 58104.,  67896.,  30412., 35436.,
      62520.,  72824.,  32620., 37900., 12990.,  15438.,  16910., 19486.,
      34668.,  39948.,  18014., 20718., 36876.,  42412.,  19118., 21950.,
      26220.,  31500.,  34828., 40364., 71352.,  82680.,  37036., 42828.,
      75768.,  87608.,  39244., 45292., 15534.,  18366.,  20222., 23182.,
      41292.,  47340.,  21326., 24414., 43500.,  49804.,  22430., 25646.,
      31308.,  37356.,  41452., 47756., 84600.,  97464.,  43660., 50220.,
      89016.,  102392., 45868., 52684., 18078.,  21294.,  23534., 26878.,
      47916.,  54732.,  24638., 28110., 50124.,  57196.,  25742., 29342.,
      1950.,   5166.,   8174.,  11518., 16428.,  23244.,  8510.,  11982.,
      17100.,  24172.,  8846.,  12446., 20622.,  24222.,  26846., 30574.,
      54540.,  62124.,  27950., 31806., 56748.,  64588.,  29054., 33038.,
      41484.,  49068.,  54700., 62540., 111096., 127032., 56908., 65004.,
      115512., 131960., 59116., 67468., 23166.,  27150.,  30158., 34270.,
      61164.,  69516.,  31262., 35502., 63372.,  71980.,  32366., 36734.,
      46572.,  54924.,  61324., 69932., 124344., 141816., 63532., 72396.,
      128760., 146744., 65740., 74860., 25710.,  30078.,  33470., 37966.,
      67788.,  76908.,  34574., 39198., 69996.,  79372.,  35678., 40430.,
      51660.,  60780.,  67948., 77324., 137592., 156600., 70156., 79788.,
      142008., 161528., 72364., 82252., 28254.,  33006.,  36782., 41662.,
      74412.,  84300.,  37886., 42894., 76620.,  86764.,  38990., 44126.};
  const std::array<int, 4> in_shape = {{3, 8, 6, 2}};
  const int multiplier = 4;
  const auto padding = sycldnn::PaddingMode::SAME;
  const DataType max_input_val = 2048.0;
  this->run_input_backprop_test(exp_out, in_shape, multiplier, padding,
                                max_input_val);
}
TYPED_TEST(InputBackpropWindow3Stride2, VALID3x8x6x2x4) {
  using DataType = typename TestFixture::DataType;
  const std::vector<DataType> exp_out = {
      30.,    174.,   110.,   382.,   300.,   972.,   446.,   846.,   782.,
      1310.,  0.,     0.,     270.,   798.,   350.,   1006.,  1548.,  2988.,
      1454.,  2238.,  1790.,  2702.,  0.,     0.,     700.,   2012.,  1372.,
      2940.,  4440.,  7832.,  3580.,  5404.,  4764.,  6844.,  0.,     0.,
      1966.,  2750.,  2558.,  3470.,  5964.,  7916.,  3662.,  4702.,  4510.,
      5678.,  0.,     0.,     4092.,  5916.,  5788.,  7868.,  13272., 17688.,
      7996.,  10332., 10204., 12796., 0.,     0.,     3662.,  4702.,  4766.,
      5934.,  10380., 12844., 5870.,  7166.,  7230.,  8654.,  0.,     0.,
      6974.,  8398.,  8078.,  9630.,  17772., 21004., 9950.,  11630., 11310.,
      13118., 0.,     0.,     0.,     0.,     0.,     0.,     0.,     0.,
      0.,     0.,     0.,     0.,     0.,     0.,     510.,   1422.,  2126.,
      3166.,  4332.,  6540.,  2462.,  3630.,  4334.,  5630.,  0.,     0.,
      5358.,  6654.,  6974.,  8398.,  14796., 17772., 8078.,  9630.,  9950.,
      11630., 0.,     0.,     10876., 13724., 14620., 17724., 30936., 37400.,
      16828., 20188., 21084., 24700., 0.,     0.,     7054.,  8606.,  9182.,
      10862., 19212., 22700., 10286., 12094., 12670., 14606., 0.,     0.,
      14268., 17628., 19036., 22652., 39768., 47256., 21244., 25116., 26524.,
      30652., 0.,     0.,     8750.,  10558., 11390., 13326., 23628., 27628.,
      12494., 14558., 15390., 17582., 0.,     0.,     16670., 18862., 19310.,
      21630., 40236., 45004., 21182., 23630., 24078., 26654., 0.,     0.,
      0.,     0.,     0.,     0.,     0.,     0.,     0.,     0.,     0.,
      0.,     0.,     0.,     990.,   2670.,  4142.,  5950.,  8364.,  12108.,
      4478.,  6414.,  7886.,  9950.,  0.,     0.,     10446., 12510., 13598.,
      15790., 28044., 32556., 14702., 17022., 18110., 20558., 0.,     0.,
      21052., 25436., 27868., 32508., 57432., 66968., 30076., 34972., 37404.,
      42556., 0.,     0.,     12142., 14462., 15806., 18254., 32460., 37484.,
      16910., 19486., 20830., 23534., 0.,     0.,     24444., 29340., 32284.,
      37436., 66264., 76824., 34492., 39900., 42844., 48508., 0.,     0.,
      13838., 16414., 18014., 20718., 36876., 42412., 19118., 21950., 23550.,
      26510., 0.,     0.,     26366., 29326., 30542., 33630., 62700., 69004.,
      32414., 35630., 36846., 40190., 0.,     0.,     0.,     0.,     0.,
      0.,     0.,     0.,     0.,     0.,     0.,     0.,     0.,     0.};
  const std::array<int, 4> in_shape = {{3, 8, 6, 2}};
  const int multiplier = 4;
  const auto padding = sycldnn::PaddingMode::VALID;
  const DataType max_input_val = 2048.0;
  this->run_input_backprop_test(exp_out, in_shape, multiplier, padding,
                                max_input_val);
}
TYPED_TEST(InputBackpropWindow3Stride2, SAME3x8x6x4x1) {
  using DataType = typename TestFixture::DataType;
  const std::vector<DataType> exp_out = {
      1.,    4.,    9.,    16.,   5.,    12.,   21.,   32.,    14.,   32.,
      54.,   80.,   25.,   36.,   49.,   64.,   54.,   80.,    110.,  144.,
      45.,   60.,   77.,   96.,   13.,   28.,   45.,   64.,    17.,   36.,
      57.,   80.,   86.,   128.,  174.,  224.,  85.,   108.,   133.,  160.,
      222.,  272.,  326.,  384.,  153.,  180.,  209.,  240.,   38.,   80.,
      126.,  176.,  94.,   144.,  198.,  256.,  292.,  400.,   516.,  640.,
      230.,  288.,  350.,  416.,  564.,  688.,  820.,  960.,   366.,  432.,
      502.,  576.,  169.,  196.,  225.,  256.,  221.,  252.,   285.,  320.,
      494.,  560.,  630.,  704.,  289.,  324.,  361.,  400.,   630.,  704.,
      782.,  864.,  357.,  396.,  437.,  480.,  350.,  416.,   486.,  560.,
      502.,  576.,  654.,  736.,  1108., 1264., 1428., 1600.,  638.,  720.,
      806.,  896.,  1380., 1552., 1732., 1920., 774.,  864.,   958.,  1056.,
      325.,  364.,  405.,  448.,  425.,  468.,  513.,  560.,   902.,  992.,
      1086., 1184., 493.,  540.,  589.,  640.,  1038., 1136.,  1238., 1344.,
      561.,  612.,  665.,  720.,  662.,  752.,  846.,  944.,   910.,  1008.,
      1110., 1216., 1924., 2128., 2340., 2560., 1046., 1152.,  1262., 1376.,
      2196., 2416., 2644., 2880., 1182., 1296., 1414., 1536.,  481.,  532.,
      585.,  640.,  629.,  684.,  741.,  800.,  1310., 1424.,  1542., 1664.,
      697.,  756.,  817.,  880.,  1446., 1568., 1694., 1824.,  765.,  828.,
      893.,  960.,  49.,   100.,  153.,  208.,  245.,  300.,   357.,  416.,
      494.,  608.,  726.,  848.,  265.,  324.,  385.,  448.,   534.,  656.,
      782.,  912.,  285.,  348.,  413.,  480.,  637.,  700.,   765.,  832.,
      833.,  900.,  969.,  1040., 1718., 1856., 1998., 2144.,  901.,  972.,
      1045., 1120., 1854., 2000., 2150., 2304., 969.,  1044.,  1121., 1200.,
      1286., 1424., 1566., 1712., 1726., 1872., 2022., 2176.,  3556., 3856.,
      4164., 4480., 1862., 2016., 2174., 2336., 3828., 4144.,  4468., 4800.,
      1998., 2160., 2326., 2496., 793.,  868.,  945.,  1024.,  1037., 1116.,
      1197., 1280., 2126., 2288., 2454., 2624., 1105., 1188.,  1273., 1360.,
      2262., 2432., 2606., 2784., 1173., 1260., 1349., 1440.,  1598., 1760.,
      1926., 2096., 2134., 2304., 2478., 2656., 4372., 4720.,  5076., 5440.,
      2270., 2448., 2630., 2816., 4644., 5008., 5380., 5760.,  2406., 2592.,
      2782., 2976., 949.,  1036., 1125., 1216., 1241., 1332.,  1425., 1520.,
      2534., 2720., 2910., 3104., 1309., 1404., 1501., 1600.,  2670., 2864.,
      3062., 3264., 1377., 1476., 1577., 1680., 1910., 2096.,  2286., 2480.,
      2542., 2736., 2934., 3136., 5188., 5584., 5988., 6400.,  2678., 2880.,
      3086., 3296., 5460., 5872., 6292., 6720., 2814., 3024.,  3238., 3456.,
      1105., 1204., 1305., 1408., 1445., 1548., 1653., 1760.,  2942., 3152.,
      3366., 3584., 1513., 1620., 1729., 1840., 3078., 3296.,  3518., 3744.,
      1581., 1692., 1805., 1920., 97.,   196.,  297.,  400.,   485.,  588.,
      693.,  800.,  974.,  1184., 1398., 1616., 505.,  612.,   721.,  832.,
      1014., 1232., 1454., 1680., 525.,  636.,  749.,  864.,   1261., 1372.,
      1485., 1600., 1649., 1764., 1881., 2000., 3350., 3584.,  3822., 4064.,
      1717., 1836., 1957., 2080., 3486., 3728., 3974., 4224.,  1785., 1908.,
      2033., 2160., 2534., 2768., 3006., 3248., 3358., 3600.,  3846., 4096.,
      6820., 7312., 7812., 8320., 3494., 3744., 3998., 4256.,  7092., 7600.,
      8116., 8640., 3630., 3888., 4150., 4416., 1417., 1540.,  1665., 1792.,
      1853., 1980., 2109., 2240., 3758., 4016., 4278., 4544.,  1921., 2052.,
      2185., 2320., 3894., 4160., 4430., 4704., 1989., 2124.,  2261., 2400.,
      2846., 3104., 3366., 3632., 3766., 4032., 4302., 4576.,  7636., 8176.,
      8724., 9280., 3902., 4176., 4454., 4736., 7908., 8464.,  9028., 9600.,
      4038., 4320., 4606., 4896., 1573., 1708., 1845., 1984.,  2057., 2196.,
      2337., 2480., 4166., 4448., 4734., 5024., 2125., 2268.,  2413., 2560.,
      4302., 4592., 4886., 5184., 2193., 2340., 2489., 2640.,  3158., 3440.,
      3726., 4016., 4174., 4464., 4758., 5056., 8452., 9040.,  9636., 10240.,
      4310., 4608., 4910., 5216., 8724., 9328., 9940., 10560., 4446., 4752.,
      5062., 5376., 1729., 1876., 2025., 2176., 2261., 2412.,  2565., 2720.,
      4574., 4880., 5190., 5504., 2329., 2484., 2641., 2800.,  4710., 5024.,
      5342., 5664., 2397., 2556., 2717., 2880.};
  const std::array<int, 4> in_shape = {{3, 8, 6, 4}};
  const int multiplier = 1;
  const auto padding = sycldnn::PaddingMode::SAME;
  const DataType max_input_val = 2048.0;
  this->run_input_backprop_test(exp_out, in_shape, multiplier, padding,
                                max_input_val);
}
TYPED_TEST(InputBackpropWindow3Stride2, VALID3x8x6x4x1) {
  using DataType = typename TestFixture::DataType;
  const std::vector<DataType> exp_out = {
      1.,    4.,    9.,    16.,   5.,    12.,   21.,   32.,   14.,   32.,
      54.,   80.,   25.,   36.,   49.,   64.,   45.,   60.,   77.,   96.,
      0.,    0.,    0.,    0.,    13.,   28.,   45.,   64.,   17.,   36.,
      57.,   80.,   86.,   128.,  174.,  224.,  85.,   108.,  133.,  160.,
      105.,  132.,  161.,  192.,  0.,    0.,    0.,    0.,    34.,   72.,
      114.,  160.,  74.,   120.,  170.,  224.,  252.,  352.,  460.,  576.,
      210.,  264.,  322.,  384.,  282.,  344.,  410.,  480.,  0.,    0.,
      0.,    0.,    117.,  140.,  165.,  192.,  153.,  180.,  209.,  240.,
      358.,  416.,  478.,  544.,  221.,  252.,  285.,  320.,  273.,  308.,
      345.,  384.,  0.,    0.,    0.,    0.,    242.,  296.,  354.,  416.,
      346.,  408.,  474.,  544.,  796.,  928.,  1068., 1216., 482.,  552.,
      626.,  704.,  618.,  696.,  778.,  864.,  0.,    0.,    0.,    0.,
      221.,  252.,  285.,  320.,  289.,  324.,  361.,  400.,  630.,  704.,
      782.,  864.,  357.,  396.,  437.,  480.,  441.,  484.,  529.,  576.,
      0.,    0.,    0.,    0.,    425.,  468.,  513.,  560.,  493.,  540.,
      589.,  640.,  1086., 1184., 1286., 1392., 609.,  660.,  713.,  768.,
      693.,  748.,  805.,  864.,  0.,    0.,    0.,    0.,    0.,    0.,
      0.,    0.,    0.,    0.,    0.,    0.,    0.,    0.,    0.,    0.,
      0.,    0.,    0.,    0.,    0.,    0.,    0.,    0.,    0.,    0.,
      0.,    0.,    25.,   52.,   81.,   112.,  125.,  156.,  189.,  224.,
      254.,  320.,  390.,  464.,  145.,  180.,  217.,  256.,  261.,  300.,
      341.,  384.,  0.,    0.,    0.,    0.,    325.,  364.,  405.,  448.,
      425.,  468.,  513.,  560.,  902.,  992.,  1086., 1184., 493.,  540.,
      589.,  640.,  609.,  660.,  713.,  768.,  0.,    0.,    0.,    0.,
      658.,  744.,  834.,  928.,  890.,  984.,  1082., 1184., 1884., 2080.,
      2284., 2496., 1026., 1128., 1234., 1344., 1290., 1400., 1514., 1632.,
      0.,    0.,    0.,    0.,    429.,  476.,  525.,  576.,  561.,  612.,
      665.,  720.,  1174., 1280., 1390., 1504., 629.,  684.,  741.,  800.,
      777.,  836.,  897.,  960.,  0.,    0.,    0.,    0.,    866.,  968.,
      1074., 1184., 1162., 1272., 1386., 1504., 2428., 2656., 2892., 3136.,
      1298., 1416., 1538., 1664., 1626., 1752., 1882., 2016., 0.,    0.,
      0.,    0.,    533.,  588.,  645.,  704.,  697.,  756.,  817.,  880.,
      1446., 1568., 1694., 1824., 765.,  828.,  893.,  960.,  945.,  1012.,
      1081., 1152., 0.,    0.,    0.,    0.,    1025., 1092., 1161., 1232.,
      1189., 1260., 1333., 1408., 2478., 2624., 2774., 2928., 1305., 1380.,
      1457., 1536., 1485., 1564., 1645., 1728., 0.,    0.,    0.,    0.,
      0.,    0.,    0.,    0.,    0.,    0.,    0.,    0.,    0.,    0.,
      0.,    0.,    0.,    0.,    0.,    0.,    0.,    0.,    0.,    0.,
      0.,    0.,    0.,    0.,    49.,   100.,  153.,  208.,  245.,  300.,
      357.,  416.,  494.,  608.,  726.,  848.,  265.,  324.,  385.,  448.,
      477.,  540.,  605.,  672.,  0.,    0.,    0.,    0.,    637.,  700.,
      765.,  832.,  833.,  900.,  969.,  1040., 1718., 1856., 1998., 2144.,
      901.,  972.,  1045., 1120., 1113., 1188., 1265., 1344., 0.,    0.,
      0.,    0.,    1282., 1416., 1554., 1696., 1706., 1848., 1994., 2144.,
      3516., 3808., 4108., 4416., 1842., 1992., 2146., 2304., 2298., 2456.,
      2618., 2784., 0.,    0.,    0.,    0.,    741.,  812.,  885.,  960.,
      969.,  1044., 1121., 1200., 1990., 2144., 2302., 2464., 1037., 1116.,
      1197., 1280., 1281., 1364., 1449., 1536., 0.,    0.,    0.,    0.,
      1490., 1640., 1794., 1952., 1978., 2136., 2298., 2464., 4060., 4384.,
      4716., 5056., 2114., 2280., 2450., 2624., 2634., 2808., 2986., 3168.,
      0.,    0.,    0.,    0.,    845.,  924.,  1005., 1088., 1105., 1188.,
      1273., 1360., 2262., 2432., 2606., 2784., 1173., 1260., 1349., 1440.,
      1449., 1540., 1633., 1728., 0.,    0.,    0.,    0.,    1625., 1716.,
      1809., 1904., 1885., 1980., 2077., 2176., 3870., 4064., 4262., 4464.,
      2001., 2100., 2201., 2304., 2277., 2380., 2485., 2592., 0.,    0.,
      0.,    0.,    0.,    0.,    0.,    0.,    0.,    0.,    0.,    0.,
      0.,    0.,    0.,    0.,    0.,    0.,    0.,    0.,    0.,    0.,
      0.,    0.,    0.,    0.,    0.,    0.};
  const std::array<int, 4> in_shape = {{3, 8, 6, 4}};
  const int multiplier = 1;
  const auto padding = sycldnn::PaddingMode::VALID;
  const DataType max_input_val = 2048.0;
  this->run_input_backprop_test(exp_out, in_shape, multiplier, padding,
                                max_input_val);
}
TYPED_TEST(InputBackpropWindow3Stride2, SAME3x8x6x4x2) {
  using DataType = typename TestFixture::DataType;
  const std::vector<DataType> exp_out = {
      5.,     25.,    61.,    113.,   29.,    81.,    149.,   233.,   82.,
      218.,   386.,   586.,   181.,   265.,   365.,   481.,   386.,   586.,
      818.,   1082.,  333.,   449.,   581.,   729.,   77.,    193.,   325.,
      473.,   101.,   249.,   413.,   593.,   610.,   938.,   1298.,  1690.,
      637.,   817.,   1013.,  1225.,  1682.,  2074.,  2498.,  2954.,  1173.,
      1385.,  1613.,  1857.,  226.,   554.,   914.,   1306.,  658.,   1050.,
      1474.,  1930.,  2132.,  2980.,  3892.,  4868.,  1730.,  2186.,  2674.,
      3194.,  4276.,  5252.,  6292.,  7396.,  2802.,  3322.,  3874.,  4458.,
      1301.,  1513.,  1741.,  1985.,  1709.,  1953.,  2213.,  2489.,  3826.,
      4346.,  4898.,  5482.,  2245.,  2521.,  2813.,  3121.,  4898.,  5482.,
      6098.,  6746.,  2781.,  3089.,  3413.,  3753.,  2674.,  3194.,  3746.,
      4330.,  3874.,  4458.,  5074.,  5722.,  8564.,  9796.,  11092., 12452.,
      4946.,  5594.,  6274.,  6986.,  10708., 12068., 13492., 14980., 6018.,
      6730.,  7474.,  8250.,  2525.,  2833.,  3157.,  3497.,  3317.,  3657.,
      4013.,  4385.,  7042.,  7754.,  8498.,  9274.,  3853.,  4225.,  4613.,
      5017.,  8114.,  8890.,  9698.,  10538., 4389.,  4793.,  5213.,  5649.,
      5122.,  5834.,  6578.,  7354.,  7090.,  7866.,  8674.,  9514.,  14996.,
      16612., 18292., 20036., 8162.,  9002.,  9874.,  10778., 17140., 18884.,
      20692., 22564., 9234.,  10138., 11074., 12042., 3749.,  4153.,  4573.,
      5009.,  4925.,  5361.,  5813.,  6281.,  10258., 11162., 12098., 13066.,
      5461.,  5929.,  6413.,  6913.,  11330., 12298., 13298., 14330., 5997.,
      6497.,  7013.,  7545.,  293.,   697.,   1117.,  1553.,  1853.,  2289.,
      2741.,  3209.,  3730.,  4634.,  5570.,  6538.,  2005.,  2473.,  2957.,
      3457.,  4034.,  5002.,  6002.,  7034.,  2157.,  2657.,  3173.,  3705.,
      4973.,  5473.,  5989.,  6521.,  6533.,  7065.,  7613.,  8177.,  13474.,
      14570., 15698., 16858., 7069.,  7633.,  8213.,  8809.,  14546., 15706.,
      16898., 18122., 7605.,  8201.,  8813.,  9441.,  10018., 11114., 12242.,
      13402., 13522., 14682., 15874., 17098., 27860., 30244., 32692., 35204.,
      14594., 15818., 17074., 18362., 30004., 32516., 35092., 37732., 15666.,
      16954., 18274., 19626., 6197.,  6793.,  7405.,  8033.,  8141.,  8769.,
      9413.,  10073., 16690., 17978., 19298., 20650., 8677.,  9337.,  10013.,
      10705., 17762., 19114., 20498., 21914., 9213.,  9905.,  10613., 11337.,
      12466., 13754., 15074., 16426., 16738., 18090., 19474., 20890., 34292.,
      37060., 39892., 42788., 17810., 19226., 20674., 22154., 36436., 39332.,
      42292., 45316., 18882., 20362., 21874., 23418., 7421.,  8113.,  8821.,
      9545.,  9749.,  10473., 11213., 11969., 19906., 21386., 22898., 24442.,
      10285., 11041., 11813., 12601., 20978., 22522., 24098., 25706., 10821.,
      11609., 12413., 13233., 14914., 16394., 17906., 19450., 19954., 21498.,
      23074., 24682., 40724., 43876., 47092., 50372., 21026., 22634., 24274.,
      25946., 42868., 46148., 49492., 52900., 22098., 23770., 25474., 27210.,
      8645.,  9433.,  10237., 11057., 11357., 12177., 13013., 13865., 23122.,
      24794., 26498., 28234., 11893., 12745., 13613., 14497., 24194., 25930.,
      27698., 29498., 12429., 13313., 14213., 15129., 581.,   1369.,  2173.,
      2993.,  3677.,  4497.,  5333.,  6185.,  7378.,  9050.,  10754., 12490.,
      3829.,  4681.,  5549.,  6433.,  7682.,  9418.,  11186., 12986., 3981.,
      4865.,  5765.,  6681.,  9869.,  10753., 11653., 12569., 12965., 13881.,
      14813., 15761., 26338., 28202., 30098., 32026., 13501., 14449., 15413.,
      16393., 27410., 29338., 31298., 33290., 14037., 15017., 16013., 17025.,
      19810., 21674., 23570., 25498., 26386., 28314., 30274., 32266., 53588.,
      57508., 61492., 65540., 27458., 29450., 31474., 33530., 55732., 59780.,
      63892., 68068., 28530., 30586., 32674., 34794., 11093., 12073., 13069.,
      14081., 14573., 15585., 16613., 17657., 29554., 31610., 33698., 35818.,
      15109., 16153., 17213., 18289., 30626., 32746., 34898., 37082., 15645.,
      16721., 17813., 18921., 22258., 24314., 26402., 28522., 29602., 31722.,
      33874., 36058., 60020., 64324., 68692., 73124., 30674., 32858., 35074.,
      37322., 62164., 66596., 71092., 75652., 31746., 33994., 36274., 38586.,
      12317., 13393., 14485., 15593., 16181., 17289., 18413., 19553., 32770.,
      35018., 37298., 39610., 16717., 17857., 19013., 20185., 33842., 36154.,
      38498., 40874., 17253., 18425., 19613., 20817., 24706., 26954., 29234.,
      31546., 32818., 35130., 37474., 39850., 66452., 71140., 75892., 80708.,
      33890., 36266., 38674., 41114., 68596., 73412., 78292., 83236., 34962.,
      37402., 39874., 42378., 13541., 14713., 15901., 17105., 17789., 18993.,
      20213., 21449., 35986., 38426., 40898., 43402., 18325., 19561., 20813.,
      22081., 37058., 39562., 42098., 44666., 18861., 20129., 21413., 22713.};
  const std::array<int, 4> in_shape = {{3, 8, 6, 4}};
  const int multiplier = 2;
  const auto padding = sycldnn::PaddingMode::SAME;
  const DataType max_input_val = 2048.0;
  this->run_input_backprop_test(exp_out, in_shape, multiplier, padding,
                                max_input_val);
}
TYPED_TEST(InputBackpropWindow3Stride2, VALID3x8x6x4x2) {
  using DataType = typename TestFixture::DataType;
  const std::vector<DataType> exp_out = {
      5.,     25.,    61.,    113.,   29.,    81.,    149.,   233.,   82.,
      218.,   386.,   586.,   181.,   265.,   365.,   481.,   333.,   449.,
      581.,   729.,   0.,     0.,     0.,     0.,     77.,    193.,   325.,
      473.,   101.,   249.,   413.,   593.,   610.,   938.,   1298.,  1690.,
      637.,   817.,   1013.,  1225.,  789.,   1001.,  1229.,  1473.,  0.,
      0.,     0.,     0.,     202.,   498.,   826.,   1186.,  506.,   866.,
      1258.,  1682.,  1828.,  2612.,  3460.,  4372.,  1578.,  2002.,  2458.,
      2946.,  2138.,  2626.,  3146.,  3698.,  0.,     0.,     0.,     0.,
      893.,   1073.,  1269.,  1481.,  1173.,  1385.,  1613.,  1857.,  2754.,
      3210.,  3698.,  4218.,  1709.,  1953.,  2213.,  2489.,  2117.,  2393.,
      2685.,  2993.,  0.,     0.,     0.,     0.,     1834.,  2258.,  2714.,
      3202.,  2650.,  3138.,  3658.,  4210.,  6116.,  7156.,  8260.,  9428.,
      3722.,  4274.,  4858.,  5474.,  4794.,  5410.,  6058.,  6738.,  0.,
      0.,     0.,     0.,     1709.,  1953.,  2213.,  2489.,  2245.,  2521.,
      2813.,  3121.,  4898.,  5482.,  6098.,  6746.,  2781.,  3089.,  3413.,
      3753.,  3445.,  3785.,  4141.,  4513.,  0.,     0.,     0.,     0.,
      3317.,  3657.,  4013.,  4385.,  3853.,  4225.,  4613.,  5017.,  8498.,
      9274.,  10082., 10922., 4773.,  5177.,  5597.,  6033.,  5437.,  5873.,
      6325.,  6793.,  0.,     0.,     0.,     0.,     0.,     0.,     0.,
      0.,     0.,     0.,     0.,     0.,     0.,     0.,     0.,     0.,
      0.,     0.,     0.,     0.,     0.,     0.,     0.,     0.,     0.,
      0.,     0.,     0.,     149.,   361.,   589.,   833.,   941.,   1185.,
      1445.,  1721.,  1906.,  2426.,  2978.,  3562.,  1093.,  1369.,  1661.,
      1969.,  2013.,  2321.,  2645.,  2985.,  0.,     0.,     0.,     0.,
      2525.,  2833.,  3157.,  3497.,  3317.,  3657.,  4013.,  4385.,  7042.,
      7754.,  8498.,  9274.,  3853.,  4225.,  4613.,  5017.,  4773.,  5177.,
      5597.,  6033.,  0.,     0.,     0.,     0.,     5098.,  5778.,  6490.,
      7234.,  6938.,  7682.,  8458.,  9266.,  14692., 16244., 17860., 19540.,
      8010.,  8818.,  9658.,  10530., 10106., 10978., 11882., 12818., 0.,
      0.,     0.,     0.,     3341.,  3713.,  4101.,  4505.,  4389.,  4793.,
      5213.,  5649.,  9186.,  10026., 10898., 11802., 4925.,  5361.,  5813.,
      6281.,  6101.,  6569.,  7053.,  7553.,  0.,     0.,     0.,     0.,
      6730.,  7538.,  8378.,  9250.,  9082.,  9954.,  10858., 11794., 18980.,
      20788., 22660., 24596., 10154., 11090., 12058., 13058., 12762., 13762.,
      14794., 15858., 0.,     0.,     0.,     0.,     4157.,  4593.,  5045.,
      5513.,  5461.,  5929.,  6413.,  6913.,  11330., 12298., 13298., 14330.,
      5997.,  6497.,  7013.,  7545.,  7429.,  7961.,  8509.,  9073.,  0.,
      0.,     0.,     0.,     8069.,  8601.,  9149.,  9713.,  9373.,  9937.,
      10517., 11113., 19538., 20698., 21890., 23114., 10293., 10889., 11501.,
      12129., 11725., 12353., 12997., 13657., 0.,     0.,     0.,     0.,
      0.,     0.,     0.,     0.,     0.,     0.,     0.,     0.,     0.,
      0.,     0.,     0.,     0.,     0.,     0.,     0.,     0.,     0.,
      0.,     0.,     0.,     0.,     0.,     0.,     293.,   697.,   1117.,
      1553.,  1853.,  2289.,  2741.,  3209.,  3730.,  4634.,  5570.,  6538.,
      2005.,  2473.,  2957.,  3457.,  3693.,  4193.,  4709.,  5241.,  0.,
      0.,     0.,     0.,     4973.,  5473.,  5989.,  6521.,  6533.,  7065.,
      7613.,  8177.,  13474., 14570., 15698., 16858., 7069.,  7633.,  8213.,
      8809.,  8757.,  9353.,  9965.,  10593., 0.,     0.,     0.,     0.,
      9994.,  11058., 12154., 13282., 13370., 14498., 15658., 16850., 27556.,
      29876., 32260., 34708., 14442., 15634., 16858., 18114., 18074., 19330.,
      20618., 21938., 0.,     0.,     0.,     0.,     5789.,  6353.,  6933.,
      7529.,  7605.,  8201.,  8813.,  9441.,  15618., 16842., 18098., 19386.,
      8141.,  8769.,  9413.,  10073., 10085., 10745., 11421., 12113., 0.,
      0.,     0.,     0.,     11626., 12818., 14042., 15298., 15514., 16770.,
      18058., 19378., 31844., 34420., 37060., 39764., 16586., 17906., 19258.,
      20642., 20730., 22114., 23530., 24978., 0.,     0.,     0.,     0.,
      6605.,  7233.,  7877.,  8537.,  8677.,  9337.,  10013., 10705., 17762.,
      19114., 20498., 21914., 9213.,  9905.,  10613., 11337., 11413., 12137.,
      12877., 13633., 0.,     0.,     0.,     0.,     12821., 13545., 14285.,
      15041., 14893., 15649., 16421., 17209., 30578., 32122., 33698., 35306.,
      15813., 16601., 17405., 18225., 18013., 18833., 19669., 20521., 0.,
      0.,     0.,     0.,     0.,     0.,     0.,     0.,     0.,     0.,
      0.,     0.,     0.,     0.,     0.,     0.,     0.,     0.,     0.,
      0.,     0.,     0.,     0.,     0.,     0.,     0.,     0.,     0.};
  const std::array<int, 4> in_shape = {{3, 8, 6, 4}};
  const int multiplier = 2;
  const auto padding = sycldnn::PaddingMode::VALID;
  const DataType max_input_val = 2048.0;
  this->run_input_backprop_test(exp_out, in_shape, multiplier, padding,
                                max_input_val);
}
TYPED_TEST(InputBackpropWindow3Stride2, SAME3x8x6x4x4) {
  using DataType = typename TestFixture::DataType;
  const std::vector<DataType> exp_out = {
      30.,     174.,    446.,    846.,    190.,    590.,    1118.,   1774.,
      540.,    1596.,   2908.,   4476.,   1374.,   2030.,   2814.,   3726.,
      2908.,   4476.,   6300.,   8380.,   2558.,   3470.,   4510.,   5678.,
      510.,    1422.,   2462.,   3630.,   670.,    1838.,   3134.,   4558.,
      4572.,   7164.,   10012.,  13116.,  4926.,   6350.,   7902.,   9582.,
      13084.,  16188.,  19548.,  23164.,  9182.,   10862.,  12670.,  14606.,
      1500.,   4092.,   6940.,   10044.,  4892.,   7996.,   11356.,  14972.,
      16248.,  22968.,  30200.,  37944.,  13404.,  17020.,  20892.,  25020.,
      33272.,  41016.,  49272.,  58040.,  21916.,  26044.,  30428.,  35068.,
      10206.,  11886.,  13694.,  15630.,  13438.,  15374.,  17438.,  19630.,
      30108.,  34236.,  38620.,  43260.,  17694.,  19886.,  22206.,  24654.,
      38620.,  43260.,  48156.,  53308.,  21950.,  24398.,  26974.,  29678.,
      20892.,  25020.,  29404.,  34044.,  30428.,  35068.,  39964.,  45116.,
      67320.,  77112.,  87416.,  98232.,  38940.,  44092.,  49500.,  55164.,
      84344.,  95160.,  106488., 118328., 47452.,  53116.,  59036.,  65212.,
      19902.,  22350.,  24926.,  27630.,  26206.,  28910.,  31742.,  34702.,
      55644.,  61308.,  67228.,  73404.,  30462.,  33422.,  36510.,  39726.,
      64156.,  70332.,  76764.,  83452.,  34718.,  37934.,  41278.,  44750.,
      40284.,  45948.,  51868.,  58044.,  55964.,  62140.,  68572.,  75260.,
      118392., 131256., 144632., 158520., 64476.,  71164.,  78108.,  85308.,
      135416., 149304., 163704., 178616., 72988.,  80188.,  87644.,  95356.,
      29598.,  32814.,  36158.,  39630.,  38974.,  42446.,  46046.,  49774.,
      81180.,  88380.,  95836.,  103548., 43230.,  46958.,  50814.,  54798.,
      89692.,  97404.,  105372., 113596., 47486.,  51470.,  55582.,  59822.,
      1950.,   5166.,   8510.,   11982.,  14398.,  17870.,  21470.,  25198.,
      28956.,  36156.,  43612.,  51324.,  15582.,  19310.,  23166.,  27150.,
      31324.,  39036.,  47004.,  55228.,  16766.,  20750.,  24862.,  29102.,
      39294.,  43278.,  47390.,  51630.,  51742.,  55982.,  60350.,  64846.,
      106716., 115452., 124444., 133692., 55998.,  60494.,  65118.,  69870.,
      115228., 124476., 133980., 143740., 60254.,  65006.,  69886.,  74894.,
      79068.,  87804.,  96796.,  106044., 107036., 116284., 125788., 135548.,
      220536., 239544., 259064., 279096., 115548., 125308., 135324., 145596.,
      237560., 257592., 278136., 299192., 124060., 134332., 144860., 155644.,
      48990.,  53742.,  58622.,  63630.,  64510.,  69518.,  74654.,  79918.,
      132252., 142524., 153052., 163836., 68766.,  74030.,  79422.,  84942.,
      140764., 151548., 162588., 173884., 73022.,  78542.,  84190.,  89966.,
      98460.,  108732., 119260., 130044., 132572., 143356., 154396., 165692.,
      271608., 293688., 316280., 339384., 141084., 152380., 163932., 175740.,
      288632., 311736., 335352., 359480., 149596., 161404., 173468., 185788.,
      58686.,  64206.,  69854.,  75630.,  77278.,  83054.,  88958.,  94990.,
      157788., 169596., 181660., 193980., 81534.,  87566.,  93726.,  100014.,
      166300., 178620., 191196., 204028., 85790.,  92078.,  98494.,  105038.,
      117852., 129660., 141724., 154044., 158108., 170428., 183004., 195836.,
      322680., 347832., 373496., 399672., 166620., 179452., 192540., 205884.,
      339704., 365880., 392568., 419768., 175132., 188476., 202076., 215932.,
      68382.,  74670.,  81086.,  87630.,  90046.,  96590.,  103262., 110062.,
      183324., 196668., 210268., 224124., 94302.,  101102., 108030., 115086.,
      191836., 205692., 219804., 234172., 98558.,  105614., 112798., 120110.,
      3870.,   10158.,  16574.,  23118.,  28606.,  35150.,  41822.,  48622.,
      57372.,  70716.,  84316.,  98172.,  29790.,  36590.,  43518.,  50574.,
      59740.,  73596.,  87708.,  102076., 30974.,  38030.,  45214.,  52526.,
      78078.,  85134.,  92318.,  99630.,  102814., 110126., 117566., 125134.,
      208860., 223740., 238876., 254268., 107070., 114638., 122334., 130158.,
      217372., 232764., 248412., 264316., 111326., 119150., 127102., 135182.,
      156636., 171516., 186652., 202044., 209180., 224572., 240220., 256124.,
      424824., 456120., 487928., 520248., 217692., 233596., 249756., 266172.,
      441848., 474168., 507000., 540344., 226204., 242620., 259292., 276220.,
      87774.,  95598.,  103550., 111630., 115582., 123662., 131870., 140206.,
      234396., 250812., 267484., 284412., 119838., 128174., 136638., 145230.,
      242908., 259836., 277020., 294460., 124094., 132686., 141406., 150254.,
      176028., 192444., 209116., 226044., 234716., 251644., 268828., 286268.,
      475896., 510264., 545144., 580536., 243228., 260668., 278364., 296316.,
      492920., 528312., 564216., 600632., 251740., 269692., 287900., 306364.,
      97470.,  106062., 114782., 123630., 128350., 137198., 146174., 155278.,
      259932., 277884., 296092., 314556., 132606., 141710., 150942., 160302.,
      268444., 286908., 305628., 324604., 136862., 146222., 155710., 165326.,
      195420., 213372., 231580., 250044., 260252., 278716., 297436., 316412.,
      526968., 564408., 602360., 640824., 268764., 287740., 306972., 326460.,
      543992., 582456., 621432., 660920., 277276., 296764., 316508., 336508.,
      107166., 116526., 126014., 135630., 141118., 150734., 160478., 170350.,
      285468., 304956., 324700., 344700., 145374., 155246., 165246., 175374.,
      293980., 313980., 334236., 354748., 149630., 159758., 170014., 180398.};
  const std::array<int, 4> in_shape = {{3, 8, 6, 4}};
  const int multiplier = 4;
  const auto padding = sycldnn::PaddingMode::SAME;
  const DataType max_input_val = 2048.0;
  this->run_input_backprop_test(exp_out, in_shape, multiplier, padding,
                                max_input_val);
}
TYPED_TEST(InputBackpropWindow3Stride2, VALID3x8x6x4x4) {
  using DataType = typename TestFixture::DataType;
  const std::vector<DataType> exp_out = {
      30.,     174.,    446.,    846.,    190.,    590.,    1118.,   1774.,
      540.,    1596.,   2908.,   4476.,   1374.,   2030.,   2814.,   3726.,
      2558.,   3470.,   4510.,   5678.,   0.,      0.,      0.,      0.,
      510.,    1422.,   2462.,   3630.,   670.,    1838.,   3134.,   4558.,
      4572.,   7164.,   10012.,  13116.,  4926.,   6350.,   7902.,   9582.,
      6110.,   7790.,   9598.,   11534.,  0.,      0.,      0.,      0.,
      1340.,   3676.,   6268.,   9116.,   3708.,   6556.,   9660.,   13020.,
      13880.,  20088.,  26808.,  34040.,  12220.,  15580.,  19196.,  23068.,
      16636.,  20508.,  24636.,  29020.,  0.,      0.,      0.,      0.,
      6974.,   8398.,   9950.,   11630.,  9182.,   10862.,  12670.,  14606.,
      21596.,  25212.,  29084.,  33212.,  13438.,  15374.,  17438.,  19630.,
      16670.,  18862.,  21182.,  23630.,  0.,      0.,      0.,      0.,
      14268.,  17628.,  21244.,  25116.,  20732.,  24604.,  28732.,  33116.,
      47928.,  56184.,  64952.,  74232.,  29244.,  33628.,  38268.,  43164.,
      37756.,  42652.,  47804.,  53212.,  0.,      0.,      0.,      0.,
      13438.,  15374.,  17438.,  19630.,  17694.,  19886.,  22206.,  24654.,
      38620.,  43260.,  48156.,  53308.,  21950.,  24398.,  26974.,  29678.,
      27230.,  29934.,  32766.,  35726.,  0.,      0.,      0.,      0.,
      26206.,  28910.,  31742.,  34702.,  30462.,  33422.,  36510.,  39726.,
      67228.,  73404.,  79836.,  86524.,  37790.,  41006.,  44350.,  47822.,
      43070.,  46542.,  50142.,  53870.,  0.,      0.,      0.,      0.,
      0.,      0.,      0.,      0.,      0.,      0.,      0.,      0.,
      0.,      0.,      0.,      0.,      0.,      0.,      0.,      0.,
      0.,      0.,      0.,      0.,      0.,      0.,      0.,      0.,
      990.,    2670.,   4478.,   6414.,   7294.,   9230.,   11294.,  13486.,
      14748.,  18876.,  23260.,  27900.,  8478.,   10670.,  12990.,  15438.,
      15806.,  18254.,  20830.,  23534.,  0.,      0.,      0.,      0.,
      19902.,  22350.,  24926.,  27630.,  26206.,  28910.,  31742.,  34702.,
      55644.,  61308.,  67228.,  73404.,  30462.,  33422.,  36510.,  39726.,
      37790.,  41006.,  44350.,  47822.,  0.,      0.,      0.,      0.,
      40124.,  45532.,  51196.,  57116.,  54780.,  60700.,  66876.,  73308.,
      116024., 128376., 141240., 154616., 63292.,  69724.,  76412.,  83356.,
      79996.,  86940.,  94140.,  101596., 0.,      0.,      0.,      0.,
      26366.,  29326.,  32414.,  35630.,  34718.,  37934.,  41278.,  44750.,
      72668.,  79356.,  86300.,  93500.,  38974.,  42446.,  46046.,  49774.,
      48350.,  52078.,  55934.,  59918.,  0.,      0.,      0.,      0.,
      53052.,  59484.,  66172.,  73116.,  71804.,  78748.,  85948.,  93404.,
      150072., 164472., 179384., 194808., 80316.,  87772.,  95484.,  103452.,
      101116., 109084., 117308., 125788., 0.,      0.,      0.,      0.,
      32830.,  36302.,  39902.,  43630.,  43230.,  46958.,  50814.,  54798.,
      89692.,  97404.,  105372., 113596., 47486.,  51470.,  55582.,  59822.,
      58910.,  63150.,  67518.,  72014.,  0.,      0.,      0.,      0.,
      64030.,  68270.,  72638.,  77134.,  74430.,  78926.,  83550.,  88302.,
      155164., 164412., 173916., 183676., 81758.,  86510.,  91390.,  96398.,
      93182.,  98190.,  103326., 108590., 0.,      0.,      0.,      0.,
      0.,      0.,      0.,      0.,      0.,      0.,      0.,      0.,
      0.,      0.,      0.,      0.,      0.,      0.,      0.,      0.,
      0.,      0.,      0.,      0.,      0.,      0.,      0.,      0.,
      1950.,   5166.,   8510.,   11982.,  14398.,  17870.,  21470.,  25198.,
      28956.,  36156.,  43612.,  51324.,  15582.,  19310.,  23166.,  27150.,
      29054.,  33038.,  37150.,  41390.,  0.,      0.,      0.,      0.,
      39294.,  43278.,  47390.,  51630.,  51742.,  55982.,  60350.,  64846.,
      106716., 115452., 124444., 133692., 55998.,  60494.,  65118.,  69870.,
      69470.,  74222.,  79102.,  84110.,  0.,      0.,      0.,      0.,
      78908.,  87388.,  96124.,  105116., 105852., 114844., 124092., 133596.,
      218168., 236664., 255672., 275192., 114364., 123868., 133628., 143644.,
      143356., 153372., 163644., 174172., 0.,      0.,      0.,      0.,
      45758.,  50254.,  54878.,  59630.,  60254.,  65006.,  69886.,  74894.,
      123740., 133500., 143516., 153788., 64510.,  69518.,  74654.,  79918.,
      80030.,  85294.,  90686.,  96206.,  0.,      0.,      0.,      0.,
      91836.,  101340., 111100., 121116., 122876., 132892., 143164., 153692.,
      252216., 272760., 293816., 315384., 131388., 141916., 152700., 163740.,
      164476., 175516., 186812., 198364., 0.,      0.,      0.,      0.,
      52222.,  57230.,  62366.,  67630.,  68766.,  74030.,  79422.,  84942.,
      140764., 151548., 162588., 173884., 73022.,  78542.,  84190.,  89966.,
      90590.,  96366.,  102270., 108302., 0.,      0.,      0.,      0.,
      101854., 107630., 113534., 119566., 118398., 124430., 130590., 136878.,
      243100., 255420., 267996., 280828., 125726., 132014., 138430., 144974.,
      143294., 149838., 156510., 163310., 0.,      0.,      0.,      0.,
      0.,      0.,      0.,      0.,      0.,      0.,      0.,      0.,
      0.,      0.,      0.,      0.,      0.,      0.,      0.,      0.,
      0.,      0.,      0.,      0.,      0.,      0.,      0.,      0.};
  const std::array<int, 4> in_shape = {{3, 8, 6, 4}};
  const int multiplier = 4;
  const auto padding = sycldnn::PaddingMode::VALID;
  const DataType max_input_val = 2048.0;
  this->run_input_backprop_test(exp_out, in_shape, multiplier, padding,
                                max_input_val);
}
TYPED_TEST(InputBackpropWindow3Stride2, SAME3x8x8x1x1) {
  using DataType = typename TestFixture::DataType;
  const std::vector<DataType> exp_out = {
      1.,   2.,   5.,   4.,   9.,   6.,   13.,  8.,   4.,   5.,   14.,  10.,
      24.,  15.,  34.,  20.,  12.,  18.,  44.,  28.,  64.,  38.,  84.,  48.,
      20.,  25.,  54.,  30.,  64.,  35.,  74.,  40.,  44.,  58.,  124., 68.,
      144., 78.,  164., 88.,  36.,  45.,  94.,  50.,  104., 55.,  114., 60.,
      76.,  98.,  204., 108., 224., 118., 244., 128., 52.,  65.,  134., 70.,
      144., 75.,  154., 80.,  17.,  34.,  69.,  36.,  73.,  38.,  77.,  40.,
      68.,  85.,  174., 90.,  184., 95.,  194., 100., 140., 178., 364., 188.,
      384., 198., 404., 208., 84.,  105., 214., 110., 224., 115., 234., 120.,
      172., 218., 444., 228., 464., 238., 484., 248., 100., 125., 254., 130.,
      264., 135., 274., 140., 204., 258., 524., 268., 544., 278., 564., 288.,
      116., 145., 294., 150., 304., 155., 314., 160., 33.,  66.,  133., 68.,
      137., 70.,  141., 72.,  132., 165., 334., 170., 344., 175., 354., 180.,
      268., 338., 684., 348., 704., 358., 724., 368., 148., 185., 374., 190.,
      384., 195., 394., 200., 300., 378., 764., 388., 784., 398., 804., 408.,
      164., 205., 414., 210., 424., 215., 434., 220., 332., 418., 844., 428.,
      864., 438., 884., 448., 180., 225., 454., 230., 464., 235., 474., 240.};
  const std::array<int, 4> in_shape = {{3, 8, 8, 1}};
  const int multiplier = 1;
  const auto padding = sycldnn::PaddingMode::SAME;
  const DataType max_input_val = 2048.0;
  this->run_input_backprop_test(exp_out, in_shape, multiplier, padding,
                                max_input_val);
}
TYPED_TEST(InputBackpropWindow3Stride2, VALID3x8x8x1x1) {
  using DataType = typename TestFixture::DataType;
  const std::vector<DataType> exp_out = {
      1.,   2.,   5.,   4.,   9.,   6.,   9.,   0.,   4.,   5.,   14.,  10.,
      24.,  15.,  18.,  0.,   11.,  16.,  40.,  26.,  60.,  36.,  45.,  0.,
      16.,  20.,  44.,  25.,  54.,  30.,  36.,  0.,   35.,  46.,  100., 56.,
      120., 66.,  81.,  0.,   28.,  35.,  74.,  40.,  84.,  45.,  54.,  0.,
      49.,  56.,  119., 64.,  135., 72.,  81.,  0.,   0.,   0.,   0.,   0.,
      0.,   0.,   0.,   0.,   10.,  20.,  41.,  22.,  45.,  24.,  36.,  0.,
      40.,  50.,  104., 55.,  114., 60.,  72.,  0.,   83.,  106., 220., 116.,
      240., 126., 153., 0.,   52.,  65.,  134., 70.,  144., 75.,  90.,  0.,
      107., 136., 280., 146., 300., 156., 189., 0.,   64.,  80.,  164., 85.,
      174., 90.,  108., 0.,   112., 128., 263., 136., 279., 144., 162., 0.,
      0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   19.,  38.,  77.,  40.,
      81.,  42.,  63.,  0.,   76.,  95.,  194., 100., 204., 105., 126., 0.,
      155., 196., 400., 206., 420., 216., 261., 0.,   88.,  110., 224., 115.,
      234., 120., 144., 0.,   179., 226., 460., 236., 480., 246., 297., 0.,
      100., 125., 254., 130., 264., 135., 162., 0.,   175., 200., 407., 208.,
      423., 216., 243., 0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.};
  const std::array<int, 4> in_shape = {{3, 8, 8, 1}};
  const int multiplier = 1;
  const auto padding = sycldnn::PaddingMode::VALID;
  const DataType max_input_val = 2048.0;
  this->run_input_backprop_test(exp_out, in_shape, multiplier, padding,
                                max_input_val);
}
TYPED_TEST(InputBackpropWindow3Stride2, SAME3x8x8x1x2) {
  using DataType = typename TestFixture::DataType;
  const std::vector<DataType> exp_out = {
      5.,    11.,   28.,   25.,   56.,   39.,   84.,   53.,   23.,   29.,
      88.,   67.,   164.,  105.,  240.,  143.,  70.,   114.,  288.,  190.,
      440.,  266.,  592.,  342.,  143.,  181.,  392.,  219.,  468.,  257.,
      544.,  295.,  310.,  418.,  896.,  494.,  1048., 570.,  1200., 646.,
      263.,  333.,  696.,  371.,  772.,  409.,  848.,  447.,  550.,  722.,
      1504., 798.,  1656., 874.,  1808., 950.,  383.,  485.,  1000., 523.,
      1076., 561.,  1152., 599.,  101.,  235.,  476.,  249.,  504.,  263.,
      532.,  277.,  503.,  637.,  1304., 675.,  1380., 713.,  1456., 751.,
      1030., 1330., 2720., 1406., 2872., 1482., 3024., 1558., 623.,  789.,
      1608., 827.,  1684., 865.,  1760., 903.,  1270., 1634., 3328., 1710.,
      3480., 1786., 3632., 1862., 743.,  941.,  1912., 979.,  1988., 1017.,
      2064., 1055., 1510., 1938., 3936., 2014., 4088., 2090., 4240., 2166.,
      863.,  1093., 2216., 1131., 2292., 1169., 2368., 1207., 197.,  459.,
      924.,  473.,  952.,  487.,  980.,  501.,  983.,  1245., 2520., 1283.,
      2596., 1321., 2672., 1359., 1990., 2546., 5152., 2622., 5304., 2698.,
      5456., 2774., 1103., 1397., 2824., 1435., 2900., 1473., 2976., 1511.,
      2230., 2850., 5760., 2926., 5912., 3002., 6064., 3078., 1223., 1549.,
      3128., 1587., 3204., 1625., 3280., 1663., 2470., 3154., 6368., 3230.,
      6520., 3306., 6672., 3382., 1343., 1701., 3432., 1739., 3508., 1777.,
      3584., 1815.};
  const std::array<int, 4> in_shape = {{3, 8, 8, 1}};
  const int multiplier = 2;
  const auto padding = sycldnn::PaddingMode::SAME;
  const DataType max_input_val = 2048.0;
  this->run_input_backprop_test(exp_out, in_shape, multiplier, padding,
                                max_input_val);
}
TYPED_TEST(InputBackpropWindow3Stride2, VALID3x8x8x1x2) {
  using DataType = typename TestFixture::DataType;
  const std::vector<DataType> exp_out = {
      5.,    11.,   28.,   25.,   56.,   39.,   61.,   0.,    23.,   29.,
      88.,   67.,   164.,  105.,  127.,  0.,    64.,   100.,  260.,  176.,
      412.,  252.,  320.,  0.,    113.,  143.,  316.,  181.,  392.,  219.,
      265.,  0.,    244.,  328.,  716.,  404.,  868.,  480.,  596.,  0.,
      203.,  257.,  544.,  295.,  620.,  333.,  403.,  0.,    365.,  419.,
      892.,  481.,  1016., 543.,  613.,  0.,    0.,    0.,    0.,    0.,
      0.,    0.,    0.,    0.,    59.,   137.,  280.,  151.,  308.,  165.,
      259.,  0.,    293.,  371.,  772.,  409.,  848.,  447.,  541.,  0.,
      604.,  784.,  1628., 860.,  1780., 936.,  1148., 0.,    383.,  485.,
      1000., 523.,  1076., 561.,  679.,  0.,    784.,  1012., 2084., 1088.,
      2236., 1164., 1424., 0.,    473.,  599.,  1228., 637.,  1304., 675.,
      817.,  0.,    851.,  977.,  2008., 1039., 2132., 1101., 1243., 0.,
      0.,    0.,    0.,    0.,    0.,    0.,    0.,    0.,    113.,  263.,
      532.,  277.,  560.,  291.,  457.,  0.,    563.,  713.,  1456., 751.,
      1532., 789.,  955.,  0.,    1144., 1468., 2996., 1544., 3148., 1620.,
      1976., 0.,    653.,  827.,  1684., 865.,  1760., 903.,  1093., 0.,
      1324., 1696., 3452., 1772., 3604., 1848., 2252., 0.,    743.,  941.,
      1912., 979.,  1988., 1017., 1231., 0.,    1337., 1535., 3124., 1597.,
      3248., 1659., 1873., 0.,    0.,    0.,    0.,    0.,    0.,    0.,
      0.,    0.};
  const std::array<int, 4> in_shape = {{3, 8, 8, 1}};
  const int multiplier = 2;
  const auto padding = sycldnn::PaddingMode::VALID;
  const DataType max_input_val = 2048.0;
  this->run_input_backprop_test(exp_out, in_shape, multiplier, padding,
                                max_input_val);
}
TYPED_TEST(InputBackpropWindow3Stride2, SAME3x8x8x1x4) {
  using DataType = typename TestFixture::DataType;
  const std::vector<DataType> exp_out = {
      30.,    70.,    180.,   174.,   388.,   278.,   596.,   382.,   150.,
      190.,   612.,   486.,   1204.,  782.,   1796.,  1078.,  460.,   796.,
      2056.,  1388.,  3240.,  1980.,  4424.,  2572.,  1078.,  1374.,  2980.,
      1670.,  3572.,  1966.,  4164.,  2262.,  2316.,  3164.,  6792.,  3756.,
      7976.,  4348.,  9160.,  4940.,  2006.,  2558.,  5348.,  2854.,  5940.,
      3150.,  6532.,  3446.,  4172.,  5532.,  11528., 6124.,  12712., 6716.,
      13896., 7308.,  2934.,  3742.,  7716.,  4038.,  8308.,  4334.,  8900.,
      4630.,  670.,   1734.,  3508.,  1838.,  3716.,  1942.,  3924.,  2046.,
      3862.,  4926.,  10084., 5222.,  10676., 5518.,  11268., 5814.,  7884.,
      10268., 21000., 10860., 22184., 11452., 23368., 12044., 4790.,  6110.,
      12452., 6406.,  13044., 6702.,  13636., 6998.,  9740.,  12636., 25736.,
      13228., 26920., 13820., 28104., 14412., 5718.,  7294.,  14820., 7590.,
      15412., 7886.,  16004., 8182.,  11596., 15004., 30472., 15596., 31656.,
      16188., 32840., 16780., 6646.,  8478.,  17188., 8774.,  17780., 9070.,
      18372., 9366.,  1310.,  3398.,  6836.,  3502.,  7044.,  3606.,  7252.,
      3710.,  7574.,  9662.,  19556., 9958.,  20148., 10254., 20740., 10550.,
      15308., 19740., 39944., 20332., 41128., 20924., 42312., 21516., 8502.,
      10846., 21924., 11142., 22516., 11438., 23108., 11734., 17164., 22108.,
      44680., 22700., 45864., 23292., 47048., 23884., 9430.,  12030., 24292.,
      12326., 24884., 12622., 25476., 12918., 19020., 24476., 49416., 25068.,
      50600., 25660., 51784., 26252., 10358., 13214., 26660., 13510., 27252.,
      13806., 27844., 14102.};
  const std::array<int, 4> in_shape = {{3, 8, 8, 1}};
  const int multiplier = 4;
  const auto padding = sycldnn::PaddingMode::SAME;
  const DataType max_input_val = 2048.0;
  this->run_input_backprop_test(exp_out, in_shape, multiplier, padding,
                                max_input_val);
}
TYPED_TEST(InputBackpropWindow3Stride2, VALID3x8x8x1x4) {
  using DataType = typename TestFixture::DataType;
  const std::vector<DataType> exp_out = {
      30.,    70.,    180.,   174.,   388.,   278.,   446.,   0.,     150.,
      190.,   612.,   486.,   1204.,  782.,   950.,   0.,     420.,   692.,
      1848.,  1284.,  3032.,  1876.,  2404.,  0.,     846.,   1078.,  2388.,
      1374.,  2980.,  1670.,  2030.,  0.,     1812.,  2468.,  5400.,  3060.,
      6584.,  3652.,  4564.,  0.,     1542.,  1966.,  4164.,  2262.,  4756.,
      2558.,  3110.,  0.,     2814.,  3238.,  6900.,  3726.,  7876.,  4214.,
      4766.,  0.,     0.,     0.,     0.,     0.,     0.,     0.,     0.,
      0.,     390.,   1006.,  2052.,  1110.,  2260.,  1214.,  1958.,  0.,
      2238.,  2854.,  5940.,  3150.,  6532.,  3446.,  4190.,  0.,     4596.,
      6020.,  12504., 6612.,  13688., 7204.,  8884.,  0.,     2934.,  3742.,
      7716.,  4038.,  8308.,  4334.,  5270.,  0.,     5988.,  7796.,  16056.,
      8388.,  17240., 8980.,  11044., 0.,     3630.,  4630.,  9492.,  4926.,
      10084., 5222.,  6350.,  0.,     6630.,  7630.,  15684., 8118.,  16660.,
      8606.,  9734.,  0.,     0.,     0.,     0.,     0.,     0.,     0.,
      0.,     0.,     750.,   1942.,  3924.,  2046.,  4132.,  2150.,  3470.,
      0.,     4326.,  5518.,  11268., 5814.,  11860., 6110.,  7430.,  0.,
      8772.,  11348., 23160., 11940., 24344., 12532., 15364., 0.,     5022.,
      6406.,  13044., 6702.,  13636., 6998.,  8510.,  0.,     10164., 13124.,
      26712., 13716., 27896., 14308., 17524., 0.,     5718.,  7294.,  14820.,
      7590.,  15412., 7886.,  9590.,  0.,     10446., 12022., 24468., 12510.,
      25444., 12998., 14702., 0.,     0.,     0.,     0.,     0.,     0.,
      0.,     0.,     0.};
  const std::array<int, 4> in_shape = {{3, 8, 8, 1}};
  const int multiplier = 4;
  const auto padding = sycldnn::PaddingMode::VALID;
  const DataType max_input_val = 2048.0;
  this->run_input_backprop_test(exp_out, in_shape, multiplier, padding,
                                max_input_val);
}
TYPED_TEST(InputBackpropWindow3Stride2, SAME3x8x8x2x1) {
  using DataType = typename TestFixture::DataType;
  const std::vector<DataType> exp_out = {
      1.,    4.,    3.,    8.,    8.,    20.,   9.,    16.,   20.,   36.,
      15.,   24.,   32.,   52.,   21.,   32.,   7.,    16.,   9.,    20.,
      32.,   56.,   27.,   40.,   68.,   96.,   45.,   60.,   104.,  136.,
      63.,   80.,   22.,   48.,   42.,   72.,   112.,  176.,  78.,   112.,
      184.,  256.,  114.,  152.,  256.,  336.,  150.,  192.,  63.,   80.,
      81.,   100.,  176.,  216.,  99.,   120.,  212.,  256.,  117.,  140.,
      248.,  296.,  135.,  160.,  134.,  176.,  186.,  232.,  400.,  496.,
      222.,  272.,  472.,  576.,  258.,  312.,  544.,  656.,  294.,  352.,
      119.,  144.,  153.,  180.,  320.,  376.,  171.,  200.,  356.,  416.,
      189.,  220.,  392.,  456.,  207.,  240.,  246.,  304.,  330.,  392.,
      688.,  816.,  366.,  432.,  760.,  896.,  402.,  472.,  832.,  976.,
      438.,  512.,  175.,  208.,  225.,  260.,  464.,  536.,  243.,  280.,
      500.,  576.,  261.,  300.,  536.,  616.,  279.,  320.,  33.,   68.,
      99.,   136.,  200.,  276.,  105.,  144.,  212.,  292.,  111.,  152.,
      224.,  308.,  117.,  160.,  231.,  272.,  297.,  340.,  608.,  696.,
      315.,  360.,  644.,  736.,  333.,  380.,  680.,  776.,  351.,  400.,
      470.,  560.,  618.,  712.,  1264., 1456., 654.,  752.,  1336., 1536.,
      690.,  792.,  1408., 1616., 726.,  832.,  287.,  336.,  369.,  420.,
      752.,  856.,  387.,  440.,  788.,  896.,  405.,  460.,  824.,  936.,
      423.,  480.,  582.,  688.,  762.,  872.,  1552., 1776., 798.,  912.,
      1624., 1856., 834.,  952.,  1696., 1936., 870.,  992.,  343.,  400.,
      441.,  500.,  896.,  1016., 459.,  520.,  932.,  1056., 477.,  540.,
      968.,  1096., 495.,  560.,  694.,  816.,  906.,  1032., 1840., 2096.,
      942.,  1072., 1912., 2176., 978.,  1112., 1984., 2256., 1014., 1152.,
      399.,  464.,  513.,  580.,  1040., 1176., 531.,  600.,  1076., 1216.,
      549.,  620.,  1112., 1256., 567.,  640.,  65.,   132.,  195.,  264.,
      392.,  532.,  201.,  272.,  404.,  548.,  207.,  280.,  416.,  564.,
      213.,  288.,  455.,  528.,  585.,  660.,  1184., 1336., 603.,  680.,
      1220., 1376., 621.,  700.,  1256., 1416., 639.,  720.,  918.,  1072.,
      1194., 1352., 2416., 2736., 1230., 1392., 2488., 2816., 1266., 1432.,
      2560., 2896., 1302., 1472., 511.,  592.,  657.,  740.,  1328., 1496.,
      675.,  760.,  1364., 1536., 693.,  780.,  1400., 1576., 711.,  800.,
      1030., 1200., 1338., 1512., 2704., 3056., 1374., 1552., 2776., 3136.,
      1410., 1592., 2848., 3216., 1446., 1632., 567.,  656.,  729.,  820.,
      1472., 1656., 747.,  840.,  1508., 1696., 765.,  860.,  1544., 1736.,
      783.,  880.,  1142., 1328., 1482., 1672., 2992., 3376., 1518., 1712.,
      3064., 3456., 1554., 1752., 3136., 3536., 1590., 1792., 623.,  720.,
      801.,  900.,  1616., 1816., 819.,  920.,  1652., 1856., 837.,  940.,
      1688., 1896., 855.,  960.};
  const std::array<int, 4> in_shape = {{3, 8, 8, 2}};
  const int multiplier = 1;
  const auto padding = sycldnn::PaddingMode::SAME;
  const DataType max_input_val = 2048.0;
  this->run_input_backprop_test(exp_out, in_shape, multiplier, padding,
                                max_input_val);
}
TYPED_TEST(InputBackpropWindow3Stride2, VALID3x8x8x2x1) {
  using DataType = typename TestFixture::DataType;
  const std::vector<DataType> exp_out = {
      1.,    4.,    3.,    8.,    8.,    20.,   9.,    16.,   20.,   36.,
      15.,   24.,   25.,   36.,   0.,    0.,    7.,    16.,   9.,    20.,
      32.,   56.,   27.,   40.,   68.,   96.,   45.,   60.,   55.,   72.,
      0.,    0.,    20.,   44.,   36.,   64.,   100.,  160.,  72.,   104.,
      172.,  240.,  108.,  144.,  140.,  180.,  0.,    0.,    49.,   64.,
      63.,   80.,   140.,  176.,  81.,   100.,  176.,  216.,  99.,   120.,
      121.,  144.,  0.,    0.,    104.,  140.,  144.,  184.,  316.,  400.,
      180.,  224.,  388.,  480.,  216.,  264.,  272.,  324.,  0.,    0.,
      91.,   112.,  117.,  140.,  248.,  296.,  135.,  160.,  284.,  336.,
      153.,  180.,  187.,  216.,  0.,    0.,    169.,  196.,  195.,  224.,
      416.,  476.,  225.,  256.,  476.,  540.,  255.,  288.,  289.,  324.,
      0.,    0.,    0.,    0.,    0.,    0.,    0.,    0.,    0.,    0.,
      0.,    0.,    0.,    0.,    0.,    0.,    0.,    0.,    19.,   40.,
      57.,   80.,   116.,  164.,  63.,   88.,   128.,  180.,  69.,   96.,
      115.,  144.,  0.,    0.,    133.,  160.,  171.,  200.,  356.,  416.,
      189.,  220.,  392.,  456.,  207.,  240.,  253.,  288.,  0.,    0.,
      272.,  332.,  360.,  424.,  748.,  880.,  396.,  464.,  820.,  960.,
      432.,  504.,  536.,  612.,  0.,    0.,    175.,  208.,  225.,  260.,
      464.,  536.,  243.,  280.,  500.,  576.,  261.,  300.,  319.,  360.,
      0.,    0.,    356.,  428.,  468.,  544.,  964.,  1120., 504.,  584.,
      1036., 1200., 540.,  624.,  668.,  756.,  0.,    0.,    217.,  256.,
      279.,  320.,  572.,  656.,  297.,  340.,  608.,  696.,  315.,  360.,
      385.,  432.,  0.,    0.,    403.,  448.,  465.,  512.,  956.,  1052.,
      495.,  544.,  1016., 1116., 525.,  576.,  595.,  648.,  0.,    0.,
      0.,    0.,    0.,    0.,    0.,    0.,    0.,    0.,    0.,    0.,
      0.,    0.,    0.,    0.,    0.,    0.,    37.,   76.,   111.,  152.,
      224.,  308.,  117.,  160.,  236.,  324.,  123.,  168.,  205.,  252.,
      0.,    0.,    259.,  304.,  333.,  380.,  680.,  776.,  351.,  400.,
      716.,  816.,  369.,  420.,  451.,  504.,  0.,    0.,    524.,  620.,
      684.,  784.,  1396., 1600., 720.,  824.,  1468., 1680., 756.,  864.,
      932.,  1044., 0.,    0.,    301.,  352.,  387.,  440.,  788.,  896.,
      405.,  460.,  824.,  936.,  423.,  480.,  517.,  576.,  0.,    0.,
      608.,  716.,  792.,  904.,  1612., 1840., 828.,  944.,  1684., 1920.,
      864.,  984.,  1064., 1188., 0.,    0.,    343.,  400.,  441.,  500.,
      896.,  1016., 459.,  520.,  932.,  1056., 477.,  540.,  583.,  648.,
      0.,    0.,    637.,  700.,  735.,  800.,  1496., 1628., 765.,  832.,
      1556., 1692., 795.,  864.,  901.,  972.,  0.,    0.,    0.,    0.,
      0.,    0.,    0.,    0.,    0.,    0.,    0.,    0.,    0.,    0.,
      0.,    0.,    0.,    0.};
  const std::array<int, 4> in_shape = {{3, 8, 8, 2}};
  const int multiplier = 1;
  const auto padding = sycldnn::PaddingMode::VALID;
  const DataType max_input_val = 2048.0;
  this->run_input_backprop_test(exp_out, in_shape, multiplier, padding,
                                max_input_val);
}
TYPED_TEST(InputBackpropWindow3Stride2, SAME3x8x8x2x2) {
  using DataType = typename TestFixture::DataType;
  const std::vector<DataType> exp_out = {
      5.,     25.,    17.,    53.,    46.,    134.,   61.,    113.,   134.,
      254.,   105.,   173.,   222.,   374.,   149.,   233.,   41.,    109.,
      53.,    137.,   214.,   398.,   193.,   293.,   494.,   710.,   333.,
      449.,   774.,   1022.,  473.,   605.,   130.,   330.,   282.,   514.,
      780.,   1276.,  562.,   826.,   1340.,  1900.,  842.,   1138.,  1900.,
      2524.,  1122.,  1450.,  473.,   605.,   613.,   761.,   1334.,  1646.,
      753.,   917.,   1614.,  1958.,  893.,   1073.,  1894.,  2270.,  1033.,
      1229.,  994.,   1322.,  1402.,  1762.,  3020.,  3772.,  1682.,  2074.,
      3580.,  4396.,  1962.,  2386.,  4140.,  5020.,  2242.,  2698.,  905.,
      1101.,  1173.,  1385.,  2454.,  2894.,  1313.,  1541.,  2734.,  3206.,
      1453.,  1697.,  3014.,  3518.,  1593.,  1853.,  1858.,  2314.,  2522.,
      3010.,  5260.,  6268.,  2802.,  3322.,  5820.,  6892.,  3082.,  3634.,
      6380.,  7516.,  3362.,  3946.,  1337.,  1597.,  1733.,  2009.,  3574.,
      4142.,  1873.,  2165.,  3854.,  4454.,  2013.,  2321.,  4134.,  4766.,
      2153.,  2477.,  197.,   473.,   721.,   1013.,  1454.,  2054.,  765.,
      1073.,  1542.,  2174.,  809.,   1133.,  1630.,  2294.,  853.,   1193.,
      1769.,  2093.,  2293.,  2633.,  4694.,  5390.,  2433.,  2789.,  4974.,
      5702.,  2573.,  2945.,  5254.,  6014.,  2713.,  3101.,  3586.,  4298.,
      4762.,  5506.,  9740.,  11260., 5042.,  5818.,  10300., 11884., 5322.,
      6130.,  10860., 12508., 5602.,  6442.,  2201.,  2589.,  2853.,  3257.,
      5814.,  6638.,  2993.,  3413.,  6094.,  6950.,  3133.,  3569.,  6374.,
      7262.,  3273.,  3725.,  4450.,  5290.,  5882.,  6754.,  11980., 13756.,
      6162.,  7066.,  12540., 14380., 6442.,  7378.,  13100., 15004., 6722.,
      7690.,  2633.,  3085.,  3413.,  3881.,  6934.,  7886.,  3553.,  4037.,
      7214.,  8198.,  3693.,  4193.,  7494.,  8510.,  3833.,  4349.,  5314.,
      6282.,  7002.,  8002.,  14220., 16252., 7282.,  8314.,  14780., 16876.,
      7562.,  8626.,  15340., 17500., 7842.,  8938.,  3065.,  3581.,  3973.,
      4505.,  8054.,  9134.,  4113.,  4661.,  8334.,  9446.,  4253.,  4817.,
      8614.,  9758.,  4393.,  4973.,  389.,   921.,   1425.,  1973.,  2862.,
      3974.,  1469.,  2033.,  2950.,  4094.,  1513.,  2093.,  3038.,  4214.,
      1557.,  2153.,  3497.,  4077.,  4533.,  5129.,  9174.,  10382., 4673.,
      5285.,  9454.,  10694., 4813.,  5441.,  9734.,  11006., 4953.,  5597.,
      7042.,  8266.,  9242.,  10498., 18700., 21244., 9522.,  10810., 19260.,
      21868., 9802.,  11122., 19820., 22492., 10082., 11434., 3929.,  4573.,
      5093.,  5753.,  10294., 11630., 5233.,  5909.,  10574., 11942., 5373.,
      6065.,  10854., 12254., 5513.,  6221.,  7906.,  9258.,  10362., 11746.,
      20940., 23740., 10642., 12058., 21500., 24364., 10922., 12370., 22060.,
      24988., 11202., 12682., 4361.,  5069.,  5653.,  6377.,  11414., 12878.,
      5793.,  6533.,  11694., 13190., 5933.,  6689.,  11974., 13502., 6073.,
      6845.,  8770.,  10250., 11482., 12994., 23180., 26236., 11762., 13306.,
      23740., 26860., 12042., 13618., 24300., 27484., 12322., 13930., 4793.,
      5565.,  6213.,  7001.,  12534., 14126., 6353.,  7157.,  12814., 14438.,
      6493.,  7313.,  13094., 14750., 6633.,  7469.};
  const std::array<int, 4> in_shape = {{3, 8, 8, 2}};
  const int multiplier = 2;
  const auto padding = sycldnn::PaddingMode::SAME;
  const DataType max_input_val = 2048.0;
  this->run_input_backprop_test(exp_out, in_shape, multiplier, padding,
                                max_input_val);
}
TYPED_TEST(InputBackpropWindow3Stride2, VALID3x8x8x2x2) {
  using DataType = typename TestFixture::DataType;
  const std::vector<DataType> exp_out = {
      5.,     25.,    17.,   53.,   46.,    134.,   61.,    113.,  134.,
      254.,   105.,   173.,  181.,  265.,   0.,     0.,     41.,   109.,
      53.,    137.,   214.,  398.,  193.,   293.,   494.,   710.,  333.,
      449.,   409.,   541.,  0.,    0.,     118.,   302.,   238.,  454.,
      692.,   1156.,  518.,  766.,  1252.,  1780.,  798.,   1078., 1046.,
      1358.,  0.,     0.,    365.,  481.,   473.,   605.,   1054., 1334.,
      613.,   761.,   1334., 1646., 753.,   917.,   925.,   1105., 0.,
      0.,     766.,   1046., 1078., 1390.,  2372.,  3028.,  1358., 1702.,
      2932.,  3652.,  1638., 2014., 2078.,  2486.,  0.,     0.,    689.,
      853.,   893.,   1073., 1894., 2270.,  1033.,  1229.,  2174., 2582.,
      1173.,  1385.,  1441., 1669., 0.,     0.,     1301.,  1513., 1505.,
      1733.,  3214.,  3686., 1741., 1985.,  3686.,  4190.,  1977., 2237.,
      2245.,  2521.,  0.,    0.,    0.,     0.,     0.,     0.,    0.,
      0.,     0.,     0.,    0.,    0.,     0.,     0.,     0.,    0.,
      0.,     0.,     113.,  277.,  413.,   593.,   838.,   1214., 457.,
      653.,   926.,   1334., 501.,  713.,   865.,   1093.,  0.,    0.,
      1013.,  1225.,  1313., 1541., 2734.,  3206.,  1453.,  1697., 3014.,
      3518.,  1593.,  1853., 1957., 2233.,  0.,     0.,     2062., 2534.,
      2758.,  3262.,  5732., 6772., 3038.,  3574.,  6292.,  7396., 3318.,
      3886.,  4142.,  4742., 0.,    0.,     1337.,  1597.,  1733., 2009.,
      3574.,  4142.,  1873., 2165., 3854.,  4454.,  2013.,  2321., 2473.,
      2797.,  0.,     0.,    2710., 3278.,  3598.,  4198.,  7412., 8644.,
      3878.,  4510.,  7972., 9268., 4158.,  4822.,  5174.,  5870., 0.,
      0.,     1661.,  1969., 2153., 2477.,  4414.,  5078.,  2293., 2633.,
      4694.,  5390.,  2433., 2789., 2989.,  3361.,  0.,     0.,    3137.,
      3493.,  3629.,  4001., 7462., 8222.,  3865.,  4253.,  7934., 8726.,
      4101.,  4505.,  4657., 5077., 0.,     0.,     0.,     0.,    0.,
      0.,     0.,     0.,    0.,    0.,     0.,     0.,     0.,    0.,
      0.,     0.,     0.,    0.,    221.,   529.,   809.,   1133., 1630.,
      2294.,  853.,   1193., 1718., 2414.,  897.,   1253.,  1549., 1921.,
      0.,     0.,     1985., 2341., 2573.,  2945.,  5254.,  6014., 2713.,
      3101.,  5534.,  6326., 2853., 3257.,  3505.,  3925.,  0.,    0.,
      4006.,  4766.,  5278., 6070., 10772., 12388., 5558.,  6382., 11332.,
      13012., 5838.,  6694., 7238., 8126.,  0.,     0.,     2309., 2713.,
      2993.,  3413.,  6094., 6950., 3133.,  3569.,  6374.,  7262., 3273.,
      3725.,  4021.,  4489., 0.,    0.,     4654.,  5510.,  6118., 7006.,
      12452., 14260., 6398., 7318., 13012., 14884., 6678.,  7630., 8270.,
      9254.,  0.,     0.,    2633., 3085.,  3413.,  3881.,  6934., 7886.,
      3553.,  4037.,  7214., 8198., 3693.,  4193.,  4537.,  5053., 0.,
      0.,     4973.,  5473., 5753., 6269.,  11710., 12758., 5989., 6521.,
      12182., 13262., 6225., 6773., 7069.,  7633.,  0.,     0.,    0.,
      0.,     0.,     0.,    0.,    0.,     0.,     0.,     0.,    0.,
      0.,     0.,     0.,    0.,    0.,     0.};
  const std::array<int, 4> in_shape = {{3, 8, 8, 2}};
  const int multiplier = 2;
  const auto padding = sycldnn::PaddingMode::VALID;
  const DataType max_input_val = 2048.0;
  this->run_input_backprop_test(exp_out, in_shape, multiplier, padding,
                                max_input_val);
}
TYPED_TEST(InputBackpropWindow3Stride2, SAME3x8x8x2x4) {
  using DataType = typename TestFixture::DataType;
  const std::vector<DataType> exp_out = {
      30.,     174.,    110.,   382.,    300.,    972.,    446.,   846.,
      972.,    1900.,   782.,   1310.,   1644.,   2828.,   1118.,  1774.,
      270.,    798.,    350.,   1006.,   1548.,   2988.,   1454.,  2238.,
      3756.,   5452.,   2558.,  3470.,   5964.,   7916.,   3662.,  4702.,
      860.,    2428.,   2044.,  3868.,   5784.,   9688.,   4252.,  6332.,
      10200.,  14616.,  6460.,  8796.,   14616.,  19544.,  8668.,  11260.,
      3662.,   4702.,   4766.,  5934.,   10380.,  12844.,  5870.,  7166.,
      12588.,  15308.,  6974.,  8398.,   14796.,  17772.,  8078.,  9630.,
      7644.,   10236.,  10876., 13724.,  23448.,  29400.,  13084., 16188.,
      27864.,  34328.,  15292., 18652.,  32280.,  39256.,  17500., 21116.,
      7054.,   8606.,   9182.,  10862.,  19212.,  22700.,  10286., 12094.,
      21420.,  25164.,  11390., 13326.,  23628.,  27628.,  12494., 14558.,
      14428.,  18044.,  19708., 23580.,  41112.,  49112.,  21916., 26044.,
      45528.,  54040.,  24124., 28508.,  49944.,  58968.,  26332., 30972.,
      10446.,  12510.,  13598., 15790.,  28044.,  32556.,  14702., 17022.,
      30252.,  35020.,  15806., 18254.,  32460.,  37484.,  16910., 19486.,
      1310.,   3502.,   5486.,  7806.,   11052.,  15820.,  5822.,  8270.,
      11724.,  16748.,  6158.,  8734.,   12396.,  17676.,  6494.,  9198.,
      13838.,  16414.,  18014., 20718.,  36876.,  42412.,  19118., 21950.,
      39084.,  44876.,  20222., 23182.,  41292.,  47340.,  21326., 24414.,
      27996.,  33660.,  37372., 43292.,  76440.,  88536.,  39580., 45756.,
      80856.,  93464.,  41788., 48220.,  85272.,  98392.,  43996., 50684.,
      17230.,  20318.,  22430., 25646.,  45708.,  52268.,  23534., 26878.,
      47916.,  54732.,  24638., 28110.,  50124.,  57196.,  25742., 29342.,
      34780.,  41468.,  46204., 53148.,  94104.,  108248., 48412., 55612.,
      98520.,  113176., 50620., 58076.,  102936., 118104., 52828., 60540.,
      20622.,  24222.,  26846., 30574.,  54540.,  62124.,  27950., 31806.,
      56748.,  64588.,  29054., 33038.,  58956.,  67052.,  30158., 34270.,
      41564.,  49276.,  55036., 63004.,  111768., 127960., 57244., 65468.,
      116184., 132888., 59452., 67932.,  120600., 137816., 61660., 70396.,
      24014.,  28126.,  31262., 35502.,  63372.,  71980.,  32366., 36734.,
      65580.,  74444.,  33470., 37966.,  67788.,  76908.,  34574., 39198.,
      2590.,   6830.,   10862., 15230.,  21804.,  30668.,  11198., 15694.,
      22476.,  31596.,  11534., 16158.,  23148.,  32524.,  11870., 16622.,
      27406.,  32030.,  35678., 40430.,  72204.,  81836.,  36782., 41662.,
      74412.,  84300.,  37886., 42894.,  76620.,  86764.,  38990., 44126.,
      55132.,  64892.,  72700., 82716.,  147096., 167384., 74908., 85180.,
      151512., 172312., 77116., 87644.,  155928., 177240., 79324., 90108.,
      30798.,  35934.,  40094., 45358.,  81036.,  91692.,  41198., 46590.,
      83244.,  94156.,  42302., 47822.,  85452.,  96620.,  43406., 49054.,
      61916.,  72700.,  81532., 92572.,  164760., 187096., 83740., 95036.,
      169176., 192024., 85948., 97500.,  173592., 196952., 88156., 99964.,
      34190.,  39838.,  44510., 50286.,  89868.,  101548., 45614., 51518.,
      92076.,  104012., 46718., 52750.,  94284.,  106476., 47822., 53982.,
      68700.,  80508.,  90364., 102428., 182424., 206808., 92572., 104892.,
      186840., 211736., 94780., 107356., 191256., 216664., 96988., 109820.,
      37582.,  43742.,  48926., 55214.,  98700.,  111404., 50030., 56446.,
      100908., 113868., 51134., 57678.,  103116., 116332., 52238., 58910.};
  const std::array<int, 4> in_shape = {{3, 8, 8, 2}};
  const int multiplier = 4;
  const auto padding = sycldnn::PaddingMode::SAME;
  const DataType max_input_val = 2048.0;
  this->run_input_backprop_test(exp_out, in_shape, multiplier, padding,
                                max_input_val);
}
TYPED_TEST(InputBackpropWindow3Stride2, VALID3x8x8x2x4) {
  using DataType = typename TestFixture::DataType;
  const std::vector<DataType> exp_out = {
      30.,     174.,    110.,   382.,   300.,   972.,    446.,   846.,
      972.,    1900.,   782.,   1310.,  1374.,  2030.,   0.,     0.,
      270.,    798.,    350.,   1006.,  1548.,  2988.,   1454.,  2238.,
      3756.,   5452.,   2558.,  3470.,  3150.,  4190.,   0.,     0.,
      780.,    2220.,   1708.,  3404.,  5112.,  8760.,   3916.,  5868.,
      9528.,   13688.,  6124.,  8332.,  8076.,  10540.,  0.,     0.,
      2814.,   3726.,   3662.,  4702.,  8172.,  10380.,  4766.,  5934.,
      10380.,  12844.,  5870.,  7166.,  7230.,  8654.,   0.,     0.,
      5868.,   8076.,   8332.,  10796., 18360., 23544.,  10540., 13260.,
      22776.,  28472.,  12748., 15724., 16236., 19468.,  0.,     0.,
      5358.,   6654.,   6974.,  8398.,  14796., 17772.,  8078.,  9630.,
      17004.,  20236.,  9182.,  10862., 11310., 13118.,  0.,     0.,
      10206.,  11886.,  11822., 13630., 25260., 29004.,  13694., 15630.,
      29004.,  33004.,  15566., 17630., 17694., 19886.,  0.,     0.,
      0.,      0.,      0.,     0.,     0.,     0.,      0.,     0.,
      0.,      0.,      0.,     0.,     0.,     0.,      0.,     0.,
      750.,    2046.,   3134.,  4558.,  6348.,  9324.,   3470.,  5022.,
      7020.,   10252.,  3806.,  5486.,  6702.,  8510.,   0.,     0.,
      7902.,   9582.,   10286., 12094., 21420., 25164.,  11390., 13326.,
      23628.,  27628.,  12494., 14558., 15390., 17582.,  0.,     0.,
      16044.,  19788.,  21580., 25580., 44856., 53112.,  23788., 28044.,
      49272.,  58040.,  25996., 30508., 32556., 37324.,  0.,     0.,
      10446.,  12510.,  13598., 15790., 28044., 32556.,  14702., 17022.,
      30252.,  35020.,  15806., 18254., 19470., 22046.,  0.,     0.,
      21132.,  25644.,  28204., 32972., 58104., 67896.,  30412., 35436.,
      62520.,  72824.,  32620., 37900., 40716., 46252.,  0.,     0.,
      12990.,  15438.,  16910., 19486., 34668., 39948.,  18014., 20718.,
      36876.,  42412.,  19118., 21950., 23550., 26510.,  0.,     0.,
      24750.,  27582.,  28670., 31630., 58956., 65004.,  30542., 33630.,
      62700.,  69004.,  32414., 35630., 36846., 40190.,  0.,     0.,
      0.,      0.,      0.,     0.,     0.,     0.,      0.,     0.,
      0.,      0.,      0.,     0.,     0.,     0.,      0.,     0.,
      1470.,   3918.,   6158.,  8734.,  12396., 17676.,  6494.,  9198.,
      13068.,  18604.,  6830.,  9662.,  12030., 14990.,  0.,     0.,
      15534.,  18366.,  20222., 23182., 41292., 47340.,  21326., 24414.,
      43500.,  49804.,  22430., 25646., 27630., 30974.,  0.,     0.,
      31308.,  37356.,  41452., 47756., 84600., 97464.,  43660., 50220.,
      89016.,  102392., 45868., 52684., 57036., 64108.,  0.,     0.,
      18078.,  21294.,  23534., 26878., 47916., 54732.,  24638., 28110.,
      50124.,  57196.,  25742., 29342., 31710., 35438.,  0.,     0.,
      36396.,  43212.,  48076., 55148., 97848., 112248., 50284., 57612.,
      102264., 117176., 52492., 60076., 65196., 73036.,  0.,     0.,
      20622.,  24222.,  26846., 30574., 54540., 62124.,  27950., 31806.,
      56748.,  64588.,  29054., 33038., 35790., 39902.,  0.,     0.,
      39294.,  43278.,  45518., 49630., 92652., 101004., 47390., 51630.,
      96396.,  105004., 49262., 53630., 55998., 60494.,  0.,     0.,
      0.,      0.,      0.,     0.,     0.,     0.,      0.,     0.,
      0.,      0.,      0.,     0.,     0.,     0.,      0.,     0.};
  const std::array<int, 4> in_shape = {{3, 8, 8, 2}};
  const int multiplier = 4;
  const auto padding = sycldnn::PaddingMode::VALID;
  const DataType max_input_val = 2048.0;
  this->run_input_backprop_test(exp_out, in_shape, multiplier, padding,
                                max_input_val);
}
TYPED_TEST(InputBackpropWindow3Stride2, SAME3x8x8x4x1) {
  using DataType = typename TestFixture::DataType;
  const std::vector<DataType> exp_out = {
      1.,     4.,     9.,     16.,    5.,     12.,   21.,   32.,    14.,
      32.,    54.,    80.,    25.,    36.,    49.,   64.,   54.,    80.,
      110.,   144.,   45.,    60.,    77.,    96.,   94.,   128.,   166.,
      208.,   65.,    84.,    105.,   128.,   13.,   28.,   45.,    64.,
      17.,    36.,    57.,    80.,    86.,    128.,  174.,  224.,   85.,
      108.,   133.,   160.,   222.,   272.,   326.,  384.,  153.,   180.,
      209.,   240.,   358.,   416.,   478.,   544.,  221.,  252.,   285.,
      320.,   42.,    88.,    138.,   192.,   114.,  168.,  226.,   288.,
      332.,   448.,   572.,   704.,   250.,   312.,  378.,  448.,   604.,
      736.,   876.,   1024.,  386.,   456.,   530.,  608.,  876.,   1024.,
      1180.,  1344.,  522.,   600.,   682.,   768.,  221.,  252.,   285.,
      320.,   289.,   324.,   361.,   400.,   630.,  704.,  782.,   864.,
      357.,   396.,   437.,   480.,   766.,   848.,  934.,  1024.,  425.,
      468.,   513.,   560.,   902.,   992.,   1086., 1184., 493.,   540.,
      589.,   640.,   458.,   536.,   618.,   704.,  658.,  744.,   834.,
      928.,   1420.,  1600.,  1788.,  1984.,  794.,  888.,  986.,   1088.,
      1692.,  1888.,  2092.,  2304.,  930.,   1032., 1138., 1248.,  1964.,
      2176.,  2396.,  2624.,  1066.,  1176.,  1290., 1408., 429.,   476.,
      525.,   576.,   561.,   612.,   665.,   720.,  1174., 1280.,  1390.,
      1504.,  629.,   684.,   741.,   800.,   1310., 1424., 1542.,  1664.,
      697.,   756.,   817.,   880.,   1446.,  1568., 1694., 1824.,  765.,
      828.,   893.,   960.,   874.,   984.,   1098., 1216., 1202.,  1320.,
      1442.,  1568.,  2508.,  2752.,  3004.,  3264., 1338., 1464.,  1594.,
      1728.,  2780.,  3040.,  3308.,  3584.,  1474., 1608., 1746.,  1888.,
      3052.,  3328.,  3612.,  3904.,  1610.,  1752., 1898., 2048.,  637.,
      700.,   765.,   832.,   833.,   900.,   969.,  1040., 1718.,  1856.,
      1998.,  2144.,  901.,   972.,   1045.,  1120., 1854., 2000.,  2150.,
      2304.,  969.,   1044.,  1121.,  1200.,  1990., 2144., 2302.,  2464.,
      1037.,  1116.,  1197.,  1280.,  65.,    132.,  201.,  272.,   325.,
      396.,   469.,   544.,   654.,   800.,   950.,  1104., 345.,   420.,
      497.,   576.,   694.,   848.,   1006.,  1168., 365.,  444.,   525.,
      608.,   734.,   896.,   1062.,  1232.,  385.,  468.,  553.,   640.,
      845.,   924.,   1005.,  1088.,  1105.,  1188., 1273., 1360.,  2262.,
      2432.,  2606.,  2784.,  1173.,  1260.,  1349., 1440., 2398.,  2576.,
      2758.,  2944.,  1241.,  1332.,  1425.,  1520., 2534., 2720.,  2910.,
      3104.,  1309.,  1404.,  1501.,  1600.,  1706., 1880., 2058.,  2240.,
      2290.,  2472.,  2658.,  2848.,  4684.,  5056., 5436., 5824.,  2426.,
      2616.,  2810.,  3008.,  4956.,  5344.,  5740., 6144., 2562.,  2760.,
      2962.,  3168.,  5228.,  5632.,  6044.,  6464., 2698., 2904.,  3114.,
      3328.,  1053.,  1148.,  1245.,  1344.,  1377., 1476., 1577.,  1680.,
      2806.,  3008.,  3214.,  3424.,  1445.,  1548., 1653., 1760.,  2942.,
      3152.,  3366.,  3584.,  1513.,  1620.,  1729., 1840., 3078.,  3296.,
      3518.,  3744.,  1581.,  1692.,  1805.,  1920., 2122., 2328.,  2538.,
      2752.,  2834.,  3048.,  3266.,  3488.,  5772., 6208., 6652.,  7104.,
      2970.,  3192.,  3418.,  3648.,  6044.,  6496., 6956., 7424.,  3106.,
      3336.,  3570.,  3808.,  6316.,  6784.,  7260., 7744., 3242.,  3480.,
      3722.,  3968.,  1261.,  1372.,  1485.,  1600., 1649., 1764.,  1881.,
      2000.,  3350.,  3584.,  3822.,  4064.,  1717., 1836., 1957.,  2080.,
      3486.,  3728.,  3974.,  4224.,  1785.,  1908., 2033., 2160.,  3622.,
      3872.,  4126.,  4384.,  1853.,  1980.,  2109., 2240., 2538.,  2776.,
      3018.,  3264.,  3378.,  3624.,  3874.,  4128., 6860., 7360.,  7868.,
      8384.,  3514.,  3768.,  4026.,  4288.,  7132., 7648., 8172.,  8704.,
      3650.,  3912.,  4178.,  4448.,  7404.,  7936., 8476., 9024.,  3786.,
      4056.,  4330.,  4608.,  1469.,  1596.,  1725., 1856., 1921.,  2052.,
      2185.,  2320.,  3894.,  4160.,  4430.,  4704., 1989., 2124.,  2261.,
      2400.,  4030.,  4304.,  4582.,  4864.,  2057., 2196., 2337.,  2480.,
      4166.,  4448.,  4734.,  5024.,  2125.,  2268., 2413., 2560.,  129.,
      260.,   393.,   528.,   645.,   780.,   917.,  1056., 1294.,  1568.,
      1846.,  2128.,  665.,   804.,   945.,   1088., 1334., 1616.,  1902.,
      2192.,  685.,   828.,   973.,   1120.,  1374., 1664., 1958.,  2256.,
      705.,   852.,   1001.,  1152.,  1677.,  1820., 1965., 2112.,  2193.,
      2340.,  2489.,  2640.,  4438.,  4736.,  5038., 5344., 2261.,  2412.,
      2565.,  2720.,  4574.,  4880.,  5190.,  5504., 2329., 2484.,  2641.,
      2800.,  4710.,  5024.,  5342.,  5664.,  2397., 2556., 2717.,  2880.,
      3370.,  3672.,  3978.,  4288.,  4466.,  4776., 5090., 5408.,  9036.,
      9664.,  10300., 10944., 4602.,  4920.,  5242., 5568., 9308.,  9952.,
      10604., 11264., 4738.,  5064.,  5394.,  5728., 9580., 10240., 10908.,
      11584., 4874.,  5208.,  5546.,  5888.,  1885., 2044., 2205.,  2368.,
      2465.,  2628.,  2793.,  2960.,  4982.,  5312., 5646., 5984.,  2533.,
      2700.,  2869.,  3040.,  5118.,  5456.,  5798., 6144., 2601.,  2772.,
      2945.,  3120.,  5254.,  5600.,  5950.,  6304., 2669., 2844.,  3021.,
      3200.,  3786.,  4120.,  4458.,  4800.,  5010., 5352., 5698.,  6048.,
      10124., 10816., 11516., 12224., 5146.,  5496., 5850., 6208.,  10396.,
      11104., 11820., 12544., 5282.,  5640.,  6002., 6368., 10668., 11392.,
      12124., 12864., 5418.,  5784.,  6154.,  6528., 2093., 2268.,  2445.,
      2624.,  2737.,  2916.,  3097.,  3280.,  5526., 5888., 6254.,  6624.,
      2805.,  2988.,  3173.,  3360.,  5662.,  6032., 6406., 6784.,  2873.,
      3060.,  3249.,  3440.,  5798.,  6176.,  6558., 6944., 2941.,  3132.,
      3325.,  3520.,  4202.,  4568.,  4938.,  5312., 5554., 5928.,  6306.,
      6688.,  11212., 11968., 12732., 13504., 5690., 6072., 6458.,  6848.,
      11484., 12256., 13036., 13824., 5826.,  6216., 6610., 7008.,  11756.,
      12544., 13340., 14144., 5962.,  6360.,  6762., 7168., 2301.,  2492.,
      2685.,  2880.,  3009.,  3204.,  3401.,  3600., 6070., 6464.,  6862.,
      7264.,  3077.,  3276.,  3477.,  3680.,  6206., 6608., 7014.,  7424.,
      3145.,  3348.,  3553.,  3760.,  6342.,  6752., 7166., 7584.,  3213.,
      3420.,  3629.,  3840.};
  const std::array<int, 4> in_shape = {{3, 8, 8, 4}};
  const int multiplier = 1;
  const auto padding = sycldnn::PaddingMode::SAME;
  const DataType max_input_val = 2048.0;
  this->run_input_backprop_test(exp_out, in_shape, multiplier, padding,
                                max_input_val);
}
TYPED_TEST(InputBackpropWindow3Stride2, VALID3x8x8x4x1) {
  using DataType = typename TestFixture::DataType;
  const std::vector<DataType> exp_out = {
      1.,    4.,    9.,    16.,   5.,    12.,   21.,   32.,   14.,   32.,
      54.,   80.,   25.,   36.,   49.,   64.,   54.,   80.,   110.,  144.,
      45.,   60.,   77.,   96.,   81.,   100.,  121.,  144.,  0.,    0.,
      0.,    0.,    13.,   28.,   45.,   64.,   17.,   36.,   57.,   80.,
      86.,   128.,  174.,  224.,  85.,   108.,  133.,  160.,  222.,  272.,
      326.,  384.,  153.,  180.,  209.,  240.,  189.,  220.,  253.,  288.,
      0.,    0.,    0.,    0.,    38.,   80.,   126.,  176.,  94.,   144.,
      198.,  256.,  292.,  400.,  516.,  640.,  230.,  288.,  350.,  416.,
      564.,  688.,  820.,  960.,  366.,  432.,  502.,  576.,  486.,  560.,
      638.,  720.,  0.,    0.,    0.,    0.,    169.,  196.,  225.,  256.,
      221.,  252.,  285.,  320.,  494.,  560.,  630.,  704.,  289.,  324.,
      361.,  400.,  630.,  704.,  782.,  864.,  357.,  396.,  437.,  480.,
      441.,  484.,  529.,  576.,  0.,    0.,    0.,    0.,    350.,  416.,
      486.,  560.,  502.,  576.,  654.,  736.,  1108., 1264., 1428., 1600.,
      638.,  720.,  806.,  896.,  1380., 1552., 1732., 1920., 774.,  864.,
      958.,  1056., 990.,  1088., 1190., 1296., 0.,    0.,    0.,    0.,
      325.,  364.,  405.,  448.,  425.,  468.,  513.,  560.,  902.,  992.,
      1086., 1184., 493.,  540.,  589.,  640.,  1038., 1136., 1238., 1344.,
      561.,  612.,  665.,  720.,  693.,  748.,  805.,  864.,  0.,    0.,
      0.,    0.,    625.,  676.,  729.,  784.,  725.,  780.,  837.,  896.,
      1550., 1664., 1782., 1904., 841.,  900.,  961.,  1024., 1782., 1904.,
      2030., 2160., 957.,  1020., 1085., 1152., 1089., 1156., 1225., 1296.,
      0.,    0.,    0.,    0.,    0.,    0.,    0.,    0.,    0.,    0.,
      0.,    0.,    0.,    0.,    0.,    0.,    0.,    0.,    0.,    0.,
      0.,    0.,    0.,    0.,    0.,    0.,    0.,    0.,    0.,    0.,
      0.,    0.,    0.,    0.,    0.,    0.,    37.,   76.,   117.,  160.,
      185.,  228.,  273.,  320.,  374.,  464.,  558.,  656.,  205.,  252.,
      301.,  352.,  414.,  512.,  614.,  720.,  225.,  276.,  329.,  384.,
      405.,  460.,  517.,  576.,  0.,    0.,    0.,    0.,    481.,  532.,
      585.,  640.,  629.,  684.,  741.,  800.,  1310., 1424., 1542., 1664.,
      697.,  756.,  817.,  880.,  1446., 1568., 1694., 1824., 765.,  828.,
      893.,  960.,  945.,  1012., 1081., 1152., 0.,    0.,    0.,    0.,
      974.,  1088., 1206., 1328., 1318., 1440., 1566., 1696., 2740., 2992.,
      3252., 3520., 1454., 1584., 1718., 1856., 3012., 3280., 3556., 3840.,
      1590., 1728., 1870., 2016., 1998., 2144., 2294., 2448., 0.,    0.,
      0.,    0.,    637.,  700.,  765.,  832.,  833.,  900.,  969.,  1040.,
      1718., 1856., 1998., 2144., 901.,  972.,  1045., 1120., 1854., 2000.,
      2150., 2304., 969.,  1044., 1121., 1200., 1197., 1276., 1357., 1440.,
      0.,    0.,    0.,    0.,    1286., 1424., 1566., 1712., 1726., 1872.,
      2022., 2176., 3556., 3856., 4164., 4480., 1862., 2016., 2174., 2336.,
      3828., 4144., 4468., 4800., 1998., 2160., 2326., 2496., 2502., 2672.,
      2846., 3024., 0.,    0.,    0.,    0.,    793.,  868.,  945.,  1024.,
      1037., 1116., 1197., 1280., 2126., 2288., 2454., 2624., 1105., 1188.,
      1273., 1360., 2262., 2432., 2606., 2784., 1173., 1260., 1349., 1440.,
      1449., 1540., 1633., 1728., 0.,    0.,    0.,    0.,    1525., 1612.,
      1701., 1792., 1769., 1860., 1953., 2048., 3638., 3824., 4014., 4208.,
      1885., 1980., 2077., 2176., 3870., 4064., 4262., 4464., 2001., 2100.,
      2201., 2304., 2277., 2380., 2485., 2592., 0.,    0.,    0.,    0.,
      0.,    0.,    0.,    0.,    0.,    0.,    0.,    0.,    0.,    0.,
      0.,    0.,    0.,    0.,    0.,    0.,    0.,    0.,    0.,    0.,
      0.,    0.,    0.,    0.,    0.,    0.,    0.,    0.,    0.,    0.,
      0.,    0.,    73.,   148.,  225.,  304.,  365.,  444.,  525.,  608.,
      734.,  896.,  1062., 1232., 385.,  468.,  553.,  640.,  774.,  944.,
      1118., 1296., 405.,  492.,  581.,  672.,  729.,  820.,  913.,  1008.,
      0.,    0.,    0.,    0.,    949.,  1036., 1125., 1216., 1241., 1332.,
      1425., 1520., 2534., 2720., 2910., 3104., 1309., 1404., 1501., 1600.,
      2670., 2864., 3062., 3264., 1377., 1476., 1577., 1680., 1701., 1804.,
      1909., 2016., 0.,    0.,    0.,    0.,    1910., 2096., 2286., 2480.,
      2542., 2736., 2934., 3136., 5188., 5584., 5988., 6400., 2678., 2880.,
      3086., 3296., 5460., 5872., 6292., 6720., 2814., 3024., 3238., 3456.,
      3510., 3728., 3950., 4176., 0.,    0.,    0.,    0.,    1105., 1204.,
      1305., 1408., 1445., 1548., 1653., 1760., 2942., 3152., 3366., 3584.,
      1513., 1620., 1729., 1840., 3078., 3296., 3518., 3744., 1581., 1692.,
      1805., 1920., 1953., 2068., 2185., 2304., 0.,    0.,    0.,    0.,
      2222., 2432., 2646., 2864., 2950., 3168., 3390., 3616., 6004., 6448.,
      6900., 7360., 3086., 3312., 3542., 3776., 6276., 6736., 7204., 7680.,
      3222., 3456., 3694., 3936., 4014., 4256., 4502., 4752., 0.,    0.,
      0.,    0.,    1261., 1372., 1485., 1600., 1649., 1764., 1881., 2000.,
      3350., 3584., 3822., 4064., 1717., 1836., 1957., 2080., 3486., 3728.,
      3974., 4224., 1785., 1908., 2033., 2160., 2205., 2332., 2461., 2592.,
      0.,    0.,    0.,    0.,    2425., 2548., 2673., 2800., 2813., 2940.,
      3069., 3200., 5726., 5984., 6246., 6512., 2929., 3060., 3193., 3328.,
      5958., 6224., 6494., 6768., 3045., 3180., 3317., 3456., 3465., 3604.,
      3745., 3888., 0.,    0.,    0.,    0.,    0.,    0.,    0.,    0.,
      0.,    0.,    0.,    0.,    0.,    0.,    0.,    0.,    0.,    0.,
      0.,    0.,    0.,    0.,    0.,    0.,    0.,    0.,    0.,    0.,
      0.,    0.,    0.,    0.,    0.,    0.,    0.,    0.};
  const std::array<int, 4> in_shape = {{3, 8, 8, 4}};
  const int multiplier = 1;
  const auto padding = sycldnn::PaddingMode::VALID;
  const DataType max_input_val = 2048.0;
  this->run_input_backprop_test(exp_out, in_shape, multiplier, padding,
                                max_input_val);
}
TYPED_TEST(InputBackpropWindow3Stride2, SAME3x8x8x4x2) {
  using DataType = typename TestFixture::DataType;
  const std::vector<DataType> exp_out = {
      5.,     25.,    61.,     113.,    29.,    81.,    149.,   233.,
      82.,    218.,   386.,    586.,    181.,   265.,   365.,   481.,
      386.,   586.,   818.,    1082.,   333.,   449.,   581.,   729.,
      690.,   954.,   1250.,   1578.,   485.,   633.,   797.,   977.,
      77.,    193.,   325.,    473.,    101.,   249.,   413.,   593.,
      610.,   938.,   1298.,   1690.,   637.,   817.,   1013.,  1225.,
      1682.,  2074.,  2498.,   2954.,   1173.,  1385.,  1613.,  1857.,
      2754.,  3210.,  3698.,   4218.,   1709.,  1953.,  2213.,  2489.,
      250.,   610.,   1002.,   1426.,   810.,   1234.,  1690.,  2178.,
      2436.,  3348.,  4324.,   5364.,   1882.,  2370.,  2890.,  3442.,
      4580.,  5620.,  6724.,   7892.,   2954.,  3506.,  4090.,  4706.,
      6724.,  7892.,  9124.,   10420.,  4026.,  4642.,  5290.,  5970.,
      1709.,  1953.,  2213.,   2489.,   2245.,  2521.,  2813.,  3121.,
      4898.,  5482.,  6098.,   6746.,   2781.,  3089.,  3413.,  3753.,
      5970.,  6618.,  7298.,   8010.,   3317.,  3657.,  4013.,  4385.,
      7042.,  7754.,  8498.,   9274.,   3853.,  4225.,  4613.,  5017.,
      3514.,  4130.,  4778.,   5458.,   5098.,  5778.,  6490.,  7234.,
      11012., 12436., 13924.,  15476.,  6170.,  6914.,  7690.,  8498.,
      13156., 14708., 16324.,  18004.,  7242.,  8050.,  8890.,  9762.,
      15300., 16980., 18724.,  20532.,  8314.,  9186.,  10090., 11026.,
      3341.,  3713.,  4101.,   4505.,   4389.,  4793.,  5213.,  5649.,
      9186.,  10026., 10898.,  11802.,  4925.,  5361.,  5813.,  6281.,
      10258., 11162., 12098.,  13066.,  5461.,  5929.,  6413.,  6913.,
      11330., 12298., 13298.,  14330.,  5997.,  6497.,  7013.,  7545.,
      6778.,  7650.,  8554.,   9490.,   9386.,  10322., 11290., 12290.,
      19588., 21524., 23524.,  25588.,  10458., 11458., 12490., 13554.,
      21732., 23796., 25924.,  28116.,  11530., 12594., 13690., 14818.,
      23876., 26068., 28324.,  30644.,  12602., 13730., 14890., 16082.,
      4973.,  5473.,  5989.,   6521.,   6533.,  7065.,  7613.,  8177.,
      13474., 14570., 15698.,  16858.,  7069.,  7633.,  8213.,  8809.,
      14546., 15706., 16898.,  18122.,  7605.,  8201.,  8813.,  9441.,
      15618., 16842., 18098.,  19386.,  8141.,  8769.,  9413.,  10073.,
      389.,   921.,   1469.,   2033.,   2461.,  3025.,  3605.,  4201.,
      4946.,  6106.,  7298.,   8522.,   2613.,  3209.,  3821.,  4449.,
      5250.,  6474.,  7730.,   9018.,   2765.,  3393.,  4037.,  4697.,
      5554.,  6842.,  8162.,   9514.,   2917.,  3577.,  4253.,  4945.,
      6605.,  7233.,  7877.,   8537.,   8677.,  9337.,  10013., 10705.,
      17762., 19114., 20498.,  21914.,  9213.,  9905.,  10613., 11337.,
      18834., 20250., 21698.,  23178.,  9749.,  10473., 11213., 11969.,
      19906., 21386., 22898.,  24442.,  10285., 11041., 11813., 12601.,
      13306., 14690., 16106.,  17554.,  17962., 19410., 20890., 22402.,
      36740., 39700., 42724.,  45812.,  19034., 20546., 22090., 23666.,
      38884., 41972., 45124.,  48340.,  20106., 21682., 23290., 24930.,
      41028., 44244., 47524.,  50868.,  21178., 22818., 24490., 26194.,
      8237.,  8993.,  9765.,   10553.,  10821., 11609., 12413., 13233.,
      22050., 23658., 25298.,  26970.,  11357., 12177., 13013., 13865.,
      23122., 24794., 26498.,  28234.,  11893., 12745., 13613., 14497.,
      24194., 25930., 27698.,  29498.,  12429., 13313., 14213., 15129.,
      16570., 18210., 19882.,  21586.,  22250., 23954., 25690., 27458.,
      45316., 48788., 52324.,  55924.,  23322., 25090., 26890., 28722.,
      47460., 51060., 54724.,  58452.,  24394., 26226., 28090., 29986.,
      49604., 53332., 57124.,  60980.,  25466., 27362., 29290., 31250.,
      9869.,  10753., 11653.,  12569.,  12965., 13881., 14813., 15761.,
      26338., 28202., 30098.,  32026.,  13501., 14449., 15413., 16393.,
      27410., 29338., 31298.,  33290.,  14037., 15017., 16013., 17025.,
      28482., 30474., 32498.,  34554.,  14573., 15585., 16613., 17657.,
      19834., 21730., 23658.,  25618.,  26538., 28498., 30490., 32514.,
      53892., 57876., 61924.,  66036.,  27610., 29634., 31690., 33778.,
      56036., 60148., 64324.,  68564.,  28682., 30770., 32890., 35042.,
      58180., 62420., 66724.,  71092.,  29754., 31906., 34090., 36306.,
      11501., 12513., 13541.,  14585.,  15109., 16153., 17213., 18289.,
      30626., 32746., 34898.,  37082.,  15645., 16721., 17813., 18921.,
      31698., 33882., 36098.,  38346.,  16181., 17289., 18413., 19553.,
      32770., 35018., 37298.,  39610.,  16717., 17857., 19013., 20185.,
      773.,   1817.,  2877.,   3953.,   4893.,  5969.,  7061.,  8169.,
      9810.,  11994., 14210.,  16458.,  5045.,  6153.,  7277.,  8417.,
      10114., 12362., 14642.,  16954.,  5197.,  6337.,  7493.,  8665.,
      10418., 12730., 15074.,  17450.,  5349.,  6521.,  7709.,  8913.,
      13133., 14273., 15429.,  16601.,  17253., 18425., 19613., 20817.,
      34914., 37290., 39698.,  42138.,  17789., 18993., 20213., 21449.,
      35986., 38426., 40898.,  43402.,  18325., 19561., 20813., 22081.,
      37058., 39562., 42098.,  44666.,  18861., 20129., 21413., 22713.,
      26362., 28770., 31210.,  33682.,  35114., 37586., 40090., 42626.,
      71044., 76052., 81124.,  86260.,  36186., 38722., 41290., 43890.,
      73188., 78324., 83524.,  88788.,  37258., 39858., 42490., 45154.,
      75332., 80596., 85924.,  91316.,  38330., 40994., 43690., 46418.,
      14765., 16033., 17317.,  18617.,  19397., 20697., 22013., 23345.,
      39202., 41834., 44498.,  47194.,  19933., 21265., 22613., 23977.,
      40274., 42970., 45698.,  48458.,  20469., 21833., 23213., 24609.,
      41346., 44106., 46898.,  49722.,  21005., 22401., 23813., 25241.,
      29626., 32290., 34986.,  37714.,  39402., 42130., 44890., 47682.,
      79620., 85140., 90724.,  96372.,  40474., 43266., 46090., 48946.,
      81764., 87412., 93124.,  98900.,  41546., 44402., 47290., 50210.,
      83908., 89684., 95524.,  101428., 42618., 45538., 48490., 51474.,
      16397., 17793., 19205.,  20633.,  21541., 22969., 24413., 25873.,
      43490., 46378., 49298.,  52250.,  22077., 23537., 25013., 26505.,
      44562., 47514., 50498.,  53514.,  22613., 24105., 25613., 27137.,
      45634., 48650., 51698.,  54778.,  23149., 24673., 26213., 27769.,
      32890., 35810., 38762.,  41746.,  43690., 46674., 49690., 52738.,
      88196., 94228., 100324., 106484., 44762., 47810., 50890., 54002.,
      90340., 96500., 102724., 109012., 45834., 48946., 52090., 55266.,
      92484., 98772., 105124., 111540., 46906., 50082., 53290., 56530.,
      18029., 19553., 21093.,  22649.,  23685., 25241., 26813., 28401.,
      47778., 50922., 54098.,  57306.,  24221., 25809., 27413., 29033.,
      48850., 52058., 55298.,  58570.,  24757., 26377., 28013., 29665.,
      49922., 53194., 56498.,  59834.,  25293., 26945., 28613., 30297.};
  const std::array<int, 4> in_shape = {{3, 8, 8, 4}};
  const int multiplier = 2;
  const auto padding = sycldnn::PaddingMode::SAME;
  const DataType max_input_val = 2048.0;
  this->run_input_backprop_test(exp_out, in_shape, multiplier, padding,
                                max_input_val);
}
TYPED_TEST(InputBackpropWindow3Stride2, VALID3x8x8x4x2) {
  using DataType = typename TestFixture::DataType;
  const std::vector<DataType> exp_out = {
      5.,     25.,    61.,    113.,   29.,    81.,    149.,   233.,   82.,
      218.,   386.,   586.,   181.,   265.,   365.,   481.,   386.,   586.,
      818.,   1082.,  333.,   449.,   581.,   729.,   613.,   761.,   925.,
      1105.,  0.,     0.,     0.,     0.,     77.,    193.,   325.,   473.,
      101.,   249.,   413.,   593.,   610.,   938.,   1298.,  1690.,  637.,
      817.,   1013.,  1225.,  1682.,  2074.,  2498.,  2954.,  1173.,  1385.,
      1613.,  1857.,  1453.,  1697.,  1957.,  2233.,  0.,     0.,     0.,
      0.,     226.,   554.,   914.,   1306.,  658.,   1050.,  1474.,  1930.,
      2132.,  2980.,  3892.,  4868.,  1730.,  2186.,  2674.,  3194.,  4276.,
      5252.,  6292.,  7396.,  2802.,  3322.,  3874.,  4458.,  3746.,  4330.,
      4946.,  5594.,  0.,     0.,     0.,     0.,     1301.,  1513.,  1741.,
      1985.,  1709.,  1953.,  2213.,  2489.,  3826.,  4346.,  4898.,  5482.,
      2245.,  2521.,  2813.,  3121.,  4898.,  5482.,  6098.,  6746.,  2781.,
      3089.,  3413.,  3753.,  3445.,  3785.,  4141.,  4513.,  0.,     0.,
      0.,     0.,     2674.,  3194.,  3746.,  4330.,  3874.,  4458.,  5074.,
      5722.,  8564.,  9796.,  11092., 12452., 4946.,  5594.,  6274.,  6986.,
      10708., 12068., 13492., 14980., 6018.,  6730.,  7474.,  8250.,  7730.,
      8506.,  9314.,  10154., 0.,     0.,     0.,     0.,     2525.,  2833.,
      3157.,  3497.,  3317.,  3657.,  4013.,  4385.,  7042.,  7754.,  8498.,
      9274.,  3853.,  4225.,  4613.,  5017.,  8114.,  8890.,  9698.,  10538.,
      4389.,  4793.,  5213.,  5649.,  5437.,  5873.,  6325.,  6793.,  0.,
      0.,     0.,     0.,     4901.,  5305.,  5725.,  6161.,  5693.,  6129.,
      6581.,  7049.,  12178., 13082., 14018., 14986., 6613.,  7081.,  7565.,
      8065.,  14018., 14986., 15986., 17018., 7533.,  8033.,  8549.,  9081.,
      8581.,  9113.,  9661.,  10225., 0.,     0.,     0.,     0.,     0.,
      0.,     0.,     0.,     0.,     0.,     0.,     0.,     0.,     0.,
      0.,     0.,     0.,     0.,     0.,     0.,     0.,     0.,     0.,
      0.,     0.,     0.,     0.,     0.,     0.,     0.,     0.,     0.,
      0.,     0.,     0.,     0.,     221.,   529.,   853.,   1193.,  1397.,
      1737.,  2093.,  2465.,  2818.,  3530.,  4274.,  5050.,  1549.,  1921.,
      2309.,  2713.,  3122.,  3898.,  4706.,  5546.,  1701.,  2105.,  2525.,
      2961.,  3133.,  3569.,  4021.,  4489.,  0.,     0.,     0.,     0.,
      3749.,  4153.,  4573.,  5009.,  4925.,  5361.,  5813.,  6281.,  10258.,
      11162., 12098., 13066., 5461.,  5929.,  6413.,  6913.,  11330., 12298.,
      13298., 14330., 5997.,  6497.,  7013.,  7545.,  7429.,  7961.,  8509.,
      9073.,  0.,     0.,     0.,     0.,     7570.,  8474.,  9410.,  10378.,
      10306., 11274., 12274., 13306., 21428., 23428., 25492., 27620., 11378.,
      12410., 13474., 14570., 23572., 25700., 27892., 30148., 12450., 13546.,
      14674., 15834., 15698., 16858., 18050., 19274., 0.,     0.,     0.,
      0.,     4973.,  5473.,  5989.,  6521.,  6533.,  7065.,  7613.,  8177.,
      13474., 14570., 15698., 16858., 7069.,  7633.,  8213.,  8809.,  14546.,
      15706., 16898., 18122., 7605.,  8201.,  8813.,  9441.,  9421.,  10049.,
      10693., 11353., 0.,     0.,     0.,     0.,     10018., 11114., 12242.,
      13402., 13522., 14682., 15874., 17098., 27860., 30244., 32692., 35204.,
      14594., 15818., 17074., 18362., 30004., 32516., 35092., 37732., 15666.,
      16954., 18274., 19626., 19682., 21034., 22418., 23834., 0.,     0.,
      0.,     0.,     6197.,  6793.,  7405.,  8033.,  8141.,  8769.,  9413.,
      10073., 16690., 17978., 19298., 20650., 8677.,  9337.,  10013., 10705.,
      17762., 19114., 20498., 21914., 9213.,  9905.,  10613., 11337., 11413.,
      12137., 12877., 13633., 0.,     0.,     0.,     0.,     12029., 12721.,
      13429., 14153., 13973., 14697., 15437., 16193., 28738., 30218., 31730.,
      33274., 14893., 15649., 16421., 17209., 30578., 32122., 33698., 35306.,
      15813., 16601., 17405., 18225., 18013., 18833., 19669., 20521., 0.,
      0.,     0.,     0.,     0.,     0.,     0.,     0.,     0.,     0.,
      0.,     0.,     0.,     0.,     0.,     0.,     0.,     0.,     0.,
      0.,     0.,     0.,     0.,     0.,     0.,     0.,     0.,     0.,
      0.,     0.,     0.,     0.,     0.,     0.,     0.,     0.,     437.,
      1033.,  1645.,  2273.,  2765.,  3393.,  4037.,  4697.,  5554.,  6842.,
      8162.,  9514.,  2917.,  3577.,  4253.,  4945.,  5858.,  7210.,  8594.,
      10010., 3069.,  3761.,  4469.,  5193.,  5653.,  6377.,  7117.,  7873.,
      0.,     0.,     0.,     0.,     7421.,  8113.,  8821.,  9545.,  9749.,
      10473., 11213., 11969., 19906., 21386., 22898., 24442., 10285., 11041.,
      11813., 12601., 20978., 22522., 24098., 25706., 10821., 11609., 12413.,
      13233., 13405., 14225., 15061., 15913., 0.,     0.,     0.,     0.,
      14914., 16394., 17906., 19450., 19954., 21498., 23074., 24682., 40724.,
      43876., 47092., 50372., 21026., 22634., 24274., 25946., 42868., 46148.,
      49492., 52900., 22098., 23770., 25474., 27210., 27650., 29386., 31154.,
      32954., 0.,     0.,     0.,     0.,     8645.,  9433.,  10237., 11057.,
      11357., 12177., 13013., 13865., 23122., 24794., 26498., 28234., 11893.,
      12745., 13613., 14497., 24194., 25930., 27698., 29498., 12429., 13313.,
      14213., 15129., 15397., 16313., 17245., 18193., 0.,     0.,     0.,
      0.,     17362., 19034., 20738., 22474., 23170., 24906., 26674., 28474.,
      47156., 50692., 54292., 57956., 24242., 26042., 27874., 29738., 49300.,
      52964., 56692., 60484., 25314., 27178., 29074., 31002., 31634., 33562.,
      35522., 37514., 0.,     0.,     0.,     0.,     9869.,  10753., 11653.,
      12569., 12965., 13881., 14813., 15761., 26338., 28202., 30098., 32026.,
      13501., 14449., 15413., 16393., 27410., 29338., 31298., 33290., 14037.,
      15017., 16013., 17025., 17389., 18401., 19429., 20473., 0.,     0.,
      0.,     0.,     19157., 20137., 21133., 22145., 22253., 23265., 24293.,
      25337., 45298., 47354., 49442., 51562., 23173., 24217., 25277., 26353.,
      47138., 49258., 51410., 53594., 24093., 25169., 26261., 27369., 27445.,
      28553., 29677., 30817., 0.,     0.,     0.,     0.,     0.,     0.,
      0.,     0.,     0.,     0.,     0.,     0.,     0.,     0.,     0.,
      0.,     0.,     0.,     0.,     0.,     0.,     0.,     0.,     0.,
      0.,     0.,     0.,     0.,     0.,     0.,     0.,     0.,     0.,
      0.,     0.,     0.};
  const std::array<int, 4> in_shape = {{3, 8, 8, 4}};
  const int multiplier = 2;
  const auto padding = sycldnn::PaddingMode::VALID;
  const DataType max_input_val = 2048.0;
  this->run_input_backprop_test(exp_out, in_shape, multiplier, padding,
                                max_input_val);
}
TYPED_TEST(InputBackpropWindow3Stride2, SAME3x8x8x4x4) {
  using DataType = typename TestFixture::DataType;
  const std::vector<DataType> exp_out = {
      30.,     174.,    446.,    846.,    190.,    590.,    1118.,   1774.,
      540.,    1596.,   2908.,   4476.,   1374.,   2030.,   2814.,   3726.,
      2908.,   4476.,   6300.,   8380.,   2558.,   3470.,   4510.,   5678.,
      5276.,   7356.,   9692.,   12284.,  3742.,   4910.,   6206.,   7630.,
      510.,    1422.,   2462.,   3630.,   670.,    1838.,   3134.,   4558.,
      4572.,   7164.,   10012.,  13116.,  4926.,   6350.,   7902.,   9582.,
      13084.,  16188.,  19548.,  23164.,  9182.,   10862.,  12670.,  14606.,
      21596.,  25212.,  29084.,  33212.,  13438.,  15374.,  17438.,  19630.,
      1660.,   4508.,   7612.,   10972.,  6076.,   9436.,   13052.,  16924.,
      18616.,  25848.,  33592.,  41848.,  14588.,  18460.,  22588.,  26972.,
      35640.,  43896.,  52664.,  61944.,  23100.,  27484.,  32124.,  37020.,
      52664.,  61944.,  71736.,  82040.,  31612.,  36508.,  41660.,  47068.,
      13438.,  15374.,  17438.,  19630.,  17694.,  19886.,  22206.,  24654.,
      38620.,  43260.,  48156.,  53308.,  21950.,  24398.,  26974.,  29678.,
      47132.,  52284.,  57692.,  63356.,  26206.,  28910.,  31742.,  34702.,
      55644.,  61308.,  67228.,  73404.,  30462.,  33422.,  36510.,  39726.,
      27516.,  32412.,  37564.,  42972.,  40124.,  45532.,  51196.,  57116.,
      86712.,  98040.,  109880., 122232., 48636.,  54556.,  60732.,  67164.,
      103736., 116088., 128952., 142328., 57148.,  63580.,  70268.,  77212.,
      120760., 134136., 148024., 162424., 65660.,  72604.,  79804.,  87260.,
      26366.,  29326.,  32414.,  35630.,  34718.,  37934.,  41278.,  44750.,
      72668.,  79356.,  86300.,  93500.,  38974.,  42446.,  46046.,  49774.,
      81180.,  88380.,  95836.,  103548., 43230.,  46958.,  50814.,  54798.,
      89692.,  97404.,  105372., 113596., 47486.,  51470.,  55582.,  59822.,
      53372.,  60316.,  67516.,  74972.,  74172.,  81628.,  89340.,  97308.,
      154808., 170232., 186168., 202616., 82684.,  90652.,  98876.,  107356.,
      171832., 188280., 205240., 222712., 91196.,  99676.,  108412., 117404.,
      188856., 206328., 224312., 242808., 99708.,  108700., 117948., 127452.,
      39294.,  43278.,  47390.,  51630.,  51742.,  55982.,  60350.,  64846.,
      106716., 115452., 124444., 133692., 55998.,  60494.,  65118.,  69870.,
      115228., 124476., 133980., 143740., 60254.,  65006.,  69886.,  74894.,
      123740., 133500., 143516., 153788., 64510.,  69518.,  74654.,  79918.,
      2590.,   6830.,   11198.,  15694.,  19134.,  23630.,  28254.,  33006.,
      38428.,  47676.,  57180.,  66940.,  20318.,  25070.,  29950.,  34958.,
      40796.,  50556.,  60572.,  70844.,  21502.,  26510.,  31646.,  36910.,
      43164.,  53436.,  63964.,  74748.,  22686.,  27950.,  33342.,  38862.,
      52222.,  57230.,  62366.,  67630.,  68766.,  74030.,  79422.,  84942.,
      140764., 151548., 162588., 173884., 73022.,  78542.,  84190.,  89966.,
      149276., 160572., 172124., 183932., 77278.,  83054.,  88958.,  94990.,
      157788., 169596., 181660., 193980., 81534.,  87566.,  93726.,  100014.,
      105084., 116124., 127420., 138972., 142268., 153820., 165628., 177692.,
      291000., 314616., 338744., 363384., 150780., 162844., 175164., 187740.,
      308024., 332664., 357816., 383480., 159292., 171868., 184700., 197788.,
      325048., 350712., 376888., 403576., 167804., 180892., 194236., 207836.,
      65150.,  71182.,  77342.,  83630.,  85790.,  92078.,  98494.,  105038.,
      174812., 187644., 200732., 214076., 90046.,  96590.,  103262., 110062.,
      183324., 196668., 210268., 224124., 94302.,  101102., 108030., 115086.,
      191836., 205692., 219804., 234172., 98558.,  105614., 112798., 120110.,
      130940., 144028., 157372., 170972., 176316., 189916., 203772., 217884.,
      359096., 386808., 415032., 443768., 184828., 198940., 213308., 227932.,
      376120., 404856., 434104., 463864., 193340., 207964., 222844., 237980.,
      393144., 422904., 453176., 483960., 201852., 216988., 232380., 248028.,
      78078.,  85134.,  92318.,  99630.,  102814., 110126., 117566., 125134.,
      208860., 223740., 238876., 254268., 107070., 114638., 122334., 130158.,
      217372., 232764., 248412., 264316., 111326., 119150., 127102., 135182.,
      225884., 241788., 257948., 274364., 115582., 123662., 131870., 140206.,
      156796., 171932., 187324., 202972., 210364., 226012., 241916., 258076.,
      427192., 459000., 491320., 524152., 218876., 235036., 251452., 268124.,
      444216., 477048., 510392., 544248., 227388., 244060., 260988., 278172.,
      461240., 495096., 529464., 564344., 235900., 253084., 270524., 288220.,
      91006.,  99086.,  107294., 115630., 119838., 128174., 136638., 145230.,
      242908., 259836., 277020., 294460., 124094., 132686., 141406., 150254.,
      251420., 268860., 286556., 304508., 128350., 137198., 146174., 155278.,
      259932., 277884., 296092., 314556., 132606., 141710., 150942., 160302.,
      5150.,   13486.,  21950.,  30542.,  38078.,  46670.,  55390.,  64238.,
      76316.,  93756.,  111452., 129404., 39262.,  48110.,  57086.,  66190.,
      78684.,  96636.,  114844., 133308., 40446.,  49550.,  58782.,  68142.,
      81052.,  99516.,  118236., 137212., 41630.,  50990.,  60478.,  70094.,
      103934., 113038., 122270., 131630., 136862., 146222., 155710., 165326.,
      276956., 295932., 315164., 334652., 141118., 150734., 160478., 170350.,
      285468., 304956., 324700., 344700., 145374., 155246., 165246., 175374.,
      293980., 313980., 334236., 354748., 149630., 159758., 170014., 180398.,
      208508., 227740., 247228., 266972., 278460., 298204., 318204., 338460.,
      563384., 603384., 643896., 684920., 286972., 307228., 327740., 348508.,
      580408., 621432., 662968., 705016., 295484., 316252., 337276., 358556.,
      597432., 639480., 682040., 725112., 303996., 325276., 346812., 368604.,
      116862., 126990., 137246., 147630., 153886., 164270., 174782., 185422.,
      311004., 332028., 353308., 374844., 158142., 168782., 179550., 190446.,
      319516., 341052., 362844., 384892., 162398., 173294., 184318., 195470.,
      328028., 350076., 372380., 394940., 166654., 177806., 189086., 200494.,
      234364., 255644., 277180., 298972., 312508., 334300., 356348., 378652.,
      631480., 675576., 720184., 765304., 321020., 343324., 365884., 388700.,
      648504., 693624., 739256., 785400., 329532., 352348., 375420., 398748.,
      665528., 711672., 758328., 805496., 338044., 361372., 384956., 408796.,
      129790., 140942., 152222., 163630., 170910., 182318., 193854., 205518.,
      345052., 368124., 391452., 415036., 175166., 186830., 198622., 210542.,
      353564., 377148., 400988., 425084., 179422., 191342., 203390., 215566.,
      362076., 386172., 410524., 435132., 183678., 195854., 208158., 220590.,
      260220., 283548., 307132., 330972., 346556., 370396., 394492., 418844.,
      699576., 747768., 796472., 845688., 355068., 379420., 404028., 428892.,
      716600., 765816., 815544., 865784., 363580., 388444., 413564., 438940.,
      733624., 783864., 834616., 885880., 372092., 397468., 423100., 448988.,
      142718., 154894., 167198., 179630., 187934., 200366., 212926., 225614.,
      379100., 404220., 429596., 455228., 192190., 204878., 217694., 230638.,
      387612., 413244., 439132., 465276., 196446., 209390., 222462., 235662.,
      396124., 422268., 448668., 475324., 200702., 213902., 227230., 240686.};
  const std::array<int, 4> in_shape = {{3, 8, 8, 4}};
  const int multiplier = 4;
  const auto padding = sycldnn::PaddingMode::SAME;
  const DataType max_input_val = 2048.0;
  this->run_input_backprop_test(exp_out, in_shape, multiplier, padding,
                                max_input_val);
}
TYPED_TEST(InputBackpropWindow3Stride2, VALID3x8x8x4x4) {
  using DataType = typename TestFixture::DataType;
  const std::vector<DataType> exp_out = {
      30.,     174.,    446.,    846.,    190.,    590.,    1118.,   1774.,
      540.,    1596.,   2908.,   4476.,   1374.,   2030.,   2814.,   3726.,
      2908.,   4476.,   6300.,   8380.,   2558.,   3470.,   4510.,   5678.,
      4766.,   5934.,   7230.,   8654.,   0.,      0.,      0.,      0.,
      510.,    1422.,   2462.,   3630.,   670.,    1838.,   3134.,   4558.,
      4572.,   7164.,   10012.,  13116.,  4926.,   6350.,   7902.,   9582.,
      13084.,  16188.,  19548.,  23164.,  9182.,   10862.,  12670.,  14606.,
      11390.,  13326.,  15390.,  17582.,  0.,      0.,      0.,      0.,
      1500.,   4092.,   6940.,   10044.,  4892.,   7996.,   11356.,  14972.,
      16248.,  22968.,  30200.,  37944.,  13404.,  17020.,  20892.,  25020.,
      33272.,  41016.,  49272.,  58040.,  21916.,  26044.,  30428.,  35068.,
      29404.,  34044.,  38940.,  44092.,  0.,      0.,      0.,      0.,
      10206.,  11886.,  13694.,  15630.,  13438.,  15374.,  17438.,  19630.,
      30108.,  34236.,  38620.,  43260.,  17694.,  19886.,  22206.,  24654.,
      38620.,  43260.,  48156.,  53308.,  21950.,  24398.,  26974.,  29678.,
      27230.,  29934.,  32766.,  35726.,  0.,      0.,      0.,      0.,
      20892.,  25020.,  29404.,  34044.,  30428.,  35068.,  39964.,  45116.,
      67320.,  77112.,  87416.,  98232.,  38940.,  44092.,  49500.,  55164.,
      84344.,  95160.,  106488., 118328., 47452.,  53116.,  59036.,  65212.,
      61084.,  67260.,  73692.,  80380.,  0.,      0.,      0.,      0.,
      19902.,  22350.,  24926.,  27630.,  26206.,  28910.,  31742.,  34702.,
      55644.,  61308.,  67228.,  73404.,  30462.,  33422.,  36510.,  39726.,
      64156.,  70332.,  76764.,  83452.,  34718.,  37934.,  41278.,  44750.,
      43070.,  46542.,  50142.,  53870.,  0.,      0.,      0.,      0.,
      38814.,  42030.,  45374.,  48846.,  45118.,  48590.,  52190.,  55918.,
      96540.,  103740., 111196., 118908., 52446.,  56174.,  60030.,  64014.,
      111196., 118908., 126876., 135100., 59774.,  63758.,  67870.,  72110.,
      68126.,  72366.,  76734.,  81230.,  0.,      0.,      0.,      0.,
      0.,      0.,      0.,      0.,      0.,      0.,      0.,      0.,
      0.,      0.,      0.,      0.,      0.,      0.,      0.,      0.,
      0.,      0.,      0.,      0.,      0.,      0.,      0.,      0.,
      0.,      0.,      0.,      0.,      0.,      0.,      0.,      0.,
      1470.,   3918.,   6494.,   9198.,   10846.,  13550.,  16382.,  19342.,
      21852.,  27516.,  33436.,  39612.,  12030.,  14990.,  18078.,  21294.,
      24220.,  30396.,  36828.,  43516.,  13214.,  16430.,  19774.,  23246.,
      24638.,  28110.,  31710.,  35438.,  0.,      0.,      0.,      0.,
      29598.,  32814.,  36158.,  39630.,  38974.,  42446.,  46046.,  49774.,
      81180.,  88380.,  95836.,  103548., 43230.,  46958.,  50814.,  54798.,
      89692.,  97404.,  105372., 113596., 47486.,  51470.,  55582.,  59822.,
      58910.,  63150.,  67518.,  72014.,  0.,      0.,      0.,      0.,
      59676.,  66876.,  74332.,  82044.,  81500.,  89212.,  97180.,  105404.,
      169464., 185400., 201848., 218808., 90012.,  98236.,  106716., 115452.,
      186488., 203448., 220920., 238904., 98524.,  107260., 116252., 125500.,
      124444., 133692., 143196., 152956., 0.,      0.,      0.,      0.,
      39294.,  43278.,  47390.,  51630.,  51742.,  55982.,  60350.,  64846.,
      106716., 115452., 124444., 133692., 55998.,  60494.,  65118.,  69870.,
      115228., 124476., 133980., 143740., 60254.,  65006.,  69886.,  74894.,
      74750.,  79758.,  84894.,  90158.,  0.,      0.,      0.,      0.,
      79068.,  87804.,  96796.,  106044., 107036., 116284., 125788., 135548.,
      220536., 239544., 259064., 279096., 115548., 125308., 135324., 145596.,
      237560., 257592., 278136., 299192., 124060., 134332., 144860., 155644.,
      156124., 166908., 177948., 189244., 0.,      0.,      0.,      0.,
      48990.,  53742.,  58622.,  63630.,  64510.,  69518.,  74654.,  79918.,
      132252., 142524., 153052., 163836., 68766.,  74030.,  79422.,  84942.,
      140764., 151548., 162588., 173884., 73022.,  78542.,  84190.,  89966.,
      90590.,  96366.,  102270., 108302., 0.,      0.,      0.,      0.,
      95550.,  101070., 106718., 112494., 111070., 116846., 122750., 128782.,
      228444., 240252., 252316., 264636., 118398., 124430., 130590., 136878.,
      243100., 255420., 267996., 280828., 125726., 132014., 138430., 144974.,
      143294., 149838., 156510., 163310., 0.,      0.,      0.,      0.,
      0.,      0.,      0.,      0.,      0.,      0.,      0.,      0.,
      0.,      0.,      0.,      0.,      0.,      0.,      0.,      0.,
      0.,      0.,      0.,      0.,      0.,      0.,      0.,      0.,
      0.,      0.,      0.,      0.,      0.,      0.,      0.,      0.,
      2910.,   7662.,   12542.,  17550.,  21502.,  26510.,  31646.,  36910.,
      43164.,  53436.,  63964.,  74748.,  22686.,  27950.,  33342.,  38862.,
      45532.,  56316.,  67356.,  78652.,  23870.,  29390.,  35038.,  40814.,
      44510.,  50286.,  56190.,  62222.,  0.,      0.,      0.,      0.,
      58686.,  64206.,  69854.,  75630.,  77278.,  83054.,  88958.,  94990.,
      157788., 169596., 181660., 193980., 81534.,  87566.,  93726.,  100014.,
      166300., 178620., 191196., 204028., 85790.,  92078.,  98494.,  105038.,
      106430., 112974., 119646., 126446., 0.,      0.,      0.,      0.,
      117852., 129660., 141724., 154044., 158108., 170428., 183004., 195836.,
      322680., 347832., 373496., 399672., 166620., 179452., 192540., 205884.,
      339704., 365880., 392568., 419768., 175132., 188476., 202076., 215932.,
      219484., 233340., 247452., 261820., 0.,      0.,      0.,      0.,
      68382.,  74670.,  81086.,  87630.,  90046.,  96590.,  103262., 110062.,
      183324., 196668., 210268., 224124., 94302.,  101102., 108030., 115086.,
      191836., 205692., 219804., 234172., 98558.,  105614., 112798., 120110.,
      122270., 129582., 137022., 144590., 0.,      0.,      0.,      0.,
      137244., 150588., 164188., 178044., 183644., 197500., 211612., 225980.,
      373752., 401976., 430712., 459960., 192156., 206524., 221148., 236028.,
      390776., 420024., 449784., 480056., 200668., 215548., 230684., 246076.,
      251164., 266556., 282204., 298108., 0.,      0.,      0.,      0.,
      78078.,  85134.,  92318.,  99630.,  102814., 110126., 117566., 125134.,
      208860., 223740., 238876., 254268., 107070., 114638., 122334., 130158.,
      217372., 232764., 248412., 264316., 111326., 119150., 127102., 135182.,
      138110., 146190., 154398., 162734., 0.,      0.,      0.,      0.,
      152286., 160110., 168062., 176142., 177022., 185102., 193310., 201646.,
      360348., 376764., 393436., 410364., 184350., 192686., 201150., 209742.,
      375004., 391932., 409116., 426556., 191678., 200270., 208990., 217838.,
      218462., 227310., 236286., 245390., 0.,      0.,      0.,      0.,
      0.,      0.,      0.,      0.,      0.,      0.,      0.,      0.,
      0.,      0.,      0.,      0.,      0.,      0.,      0.,      0.,
      0.,      0.,      0.,      0.,      0.,      0.,      0.,      0.,
      0.,      0.,      0.,      0.,      0.,      0.,      0.,      0.};
  const std::array<int, 4> in_shape = {{3, 8, 8, 4}};
  const int multiplier = 4;
  const auto padding = sycldnn::PaddingMode::VALID;
  const DataType max_input_val = 2048.0;
  this->run_input_backprop_test(exp_out, in_shape, multiplier, padding,
                                max_input_val);
}